当前位置: 首页 > news >正文

机械做网站湖南关键词优化快速

机械做网站,湖南关键词优化快速,用自家宽带做网站服务器,怎么在云服务器上建设网站【LetMeFly】1542.找出最长的超赞子字符串:前缀异或和(位运算) 力扣题目链接:https://leetcode.cn/problems/find-longest-awesome-substring/ 给你一个字符串 s 。请返回 s 中最长的 超赞子字符串 的长度。 「超赞子字符串」需…

【LetMeFly】1542.找出最长的超赞子字符串:前缀异或和(位运算)

力扣题目链接:https://leetcode.cn/problems/find-longest-awesome-substring/

给你一个字符串 s 。请返回 s 中最长的 超赞子字符串 的长度。

「超赞子字符串」需满足满足下述两个条件:

  • 该字符串是 s 的一个非空子字符串
  • 进行任意次数的字符交换后,该字符串可以变成一个回文字符串

 

示例 1:

输入:s = "3242415"
输出:5
解释:"24241" 是最长的超赞子字符串,交换其中的字符后,可以得到回文 "24142"

示例 2:

输入:s = "12345678"
输出:1

示例 3:

输入:s = "213123"
输出:6
解释:"213123" 是最长的超赞子字符串,交换其中的字符后,可以得到回文 "231132"

示例 4:

输入:s = "00"
输出:2

 

提示:

  • 1 <= s.length <= 10^5
  • s 仅由数字组成

解题方法:前缀和+哈希表+位运算

回文串有两种情况:

  1. 所有字符都出现了偶数次、
  2. 有且仅有一个字符出现了奇数次。

也就是说我们只用关心每个字符出现次数是奇数还是偶数即可。因此我们可以使用一个数 m a s k mask mask m a s k mask mask的第 i i i位表示数字 i i i出现次数是否为奇数次。

加入在 m a s k mask mask的基础上又出现了 i i i,则新的 m a s k mask mask的计算公式为:mask ^= 1 << i

我们只需要遍历一遍字符串,并且使用哈希表,哈希表 m a [ m a s k ] ma[mask] ma[mask]为前面所有数字结果为 m a s k mask mask的第一次出现位置。则遍历过程中有“

  • 若当前 m a s k mask mask出现过,则这两次出现位置之间所有字符都出现了偶数次,满足回文串要求;
  • 若当前 m a s k mask mask变化一位后在哈希表中存在,则这两次出现位置之间的字符串只有一个出现了奇数次,满足回文串要求。

遍历结束,算法结束。

  • 时间复杂度 O ( l e n ( s ) × C ) O(len(s)\times C) O(len(s)×C),其中 C C C是字符个数,这里 C = 10 C=10 C=10
  • 空间复杂度 O ( min ⁡ { l e n ( s ) , 2 C } ) O(\min\{len(s), 2^C\}) O(min{len(s),2C})

AC代码

C++
class Solution {
public:int longestAwesome(string s) {int mask = 0, ans = 1;unordered_map<int, int> ma;ma[0] = -1;for (int i = 0; i < s.size(); i++) {mask ^= (1 << (s[i] - '0'));if (ma.count(mask)) {ans = max(ans, i - ma[mask]);}else {ma[mask] = i;}// 一个奇数次字符for (int j = 0; j < 10; j++) {int mask2 = mask ^ (1 << j);if (ma.count(mask2)) {ans = max(ans, i - ma[mask2]);}}}return ans;}
};
Python
class Solution:def longestAwesome(self, s: str) -> int:mask, ans = 0, 1ma = {0: -1}for i in range(len(s)):mask ^= 1 << (ord(s[i]) - ord('0'))if mask in ma:ans = max(ans, i - ma[mask])else:ma[mask] = ifor j in range(10):mask2 = mask ^ (1 << j)if mask2 in ma:ans = max(ans, i - ma[mask2])return ans

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/139077950

http://www.tj-hxxt.cn/news/56488.html

相关文章:

  • 网站建设推荐网百度seo排名帝搜软件
  • 沧州市网站建设百度网址大全 旧版本
  • 网站谷歌优化怎么做信息流推广渠道
  • 哪个网站可以看一级a做爰片t百度搜索怎么优化
  • 个人网站设计论文题目如何做网站营销
  • 衡水市网站建设先做后付费的代运营
  • 如何做网课网站色盲眼中的世界
  • 网站发布信息的基本流程推广网址
  • java做博客网站seo基础优化包括哪些内容
  • 淘宝优惠卷网站建设公司是真的假的苏州疫情最新消息
  • 网站页头页尾怎么做浏览器缓冲设置国际最新消息
  • 中国住建部网站官网河南专业网站建设
  • 网站建设公司是什么快速关键词排名首页
  • wordpress独立页面修改cssseo在线排名优化
  • 海外sns网站seo关键词排名优化方法
  • 无锡网站制作平台近期重大新闻事件
  • 厦门有做网站建设百度联盟怎么加入赚钱
  • 做网站这么便宜可以吗北京seo费用是多少
  • 做网站后端需要学什么个人永久免费自助建站
  • php网站代做是什么意思内容营销案例
  • 南京500元做网站新疆头条今日头条新闻
  • 企业建站怎么选择企业内训
  • 外贸网站建设推广方案互联网推广怎么做
  • 学院网站改造方案长春网站公司哪家好
  • 初学者自己做网站模板网站建站哪家好
  • 给个网站做填空题黄金网站软件app大全下载
  • 郑州企业建站免费咨询网站流量统计查询
  • 汽车之家网页版跳极速版百度seo推广
  • 芜湖小学网站建设百度手机网页版
  • 七色板网站建设如何建立自己的博客网站