具体思想:

牛皮的状态压缩+前缀,这两个都没想到;

自己当时想用滑动窗口做,但是发现有个问题:收缩的时候无法进行判断;

例如:213213;

从21开始收缩无法判断,因为后续的和前面的相加可能是个满足要求的序列;

题解的思想:
使用一个9 bit的序列计算每位上是偶数还是奇数,并且使用map记录该状态出现的位置;

这里很多题解都没有讲清楚:

  1. 如果不同节点的两个状态相同,则说明,其间必定是回文满足,并且,他们的个数必定是偶数;
    例如:1,1,2,2和1,1,1,2,2,2,两者在1和2位上的奇偶状态相同,则必定他们的每位字符差是2的倍数,所以必定满足;
  2. 如果两个状态只有一位不同,也就是说只有一位奇偶不同,则说明个数必为奇数;
    例如:1,1,2和1,1,1,2,两者在一位上不同,则只需要调整该位使其差距是2的倍数,即可构成回文子串;

总而言之,状态需要满上述两种情况,才可以保证他们中间相隔的字符满足偶数(成对出现),或者奇数(只有一个不成对,剩下的都成对出现);

具体代码:

class Solution {public:int longestAwesome(string s) {unordered_map<int,int>ump;ump[0]=0;int ret=0;int qz=0;for(int i=1;i<=s.size();i++){int num=s[i]-'0';qz^=1<<i;if(ump.count(qz)){ret=max(ret,i-ump[qz]);}else{ump[qz]=i;}for(int i=0;i<10;i++){int temp=qz^(1<<i);if(ump.count(temp)){ret=max(ret,i-ump[temp]);}}}return ret;}
};

LeetCode 1542. 找出最长的超赞子字符串***相关推荐

  1. 1542. 找出最长的超赞子字符串 哈希+状态压缩

    1542. 找出最长的超赞子字符串 给你一个字符串 s .请返回 s 中最长的 超赞子字符串 的长度. 「超赞子字符串」需满足满足下述两个条件: 该字符串是 s 的一个非空子字符串 进行任意次数的字符 ...

  2. LeetCode 5485. 找出最长的超赞子字符串 (状态压缩、二进制、位运算、前缀和)

    5485. 找出最长的超赞子字符串 题意: 给你一个字符串 s .请返回 s 中最长的 超赞子字符串 的长度. 「超赞子字符串」需满足满足下述两个条件: 该字符串是 s 的一个非空子字符串 进行任意次 ...

  3. leetcode 5485. 找出最长的超赞子字符串

    5485. 找出最长的超赞子字符串 给你一个字符串 s .请返回 s 中最长的 超赞子字符串 的长度. 「超赞子字符串」需满足满足下述两个条件: 该字符串是 s 的一个非空子字符串 进行任意次数的字符 ...

  4. JAVA程序设计:找出最长的超赞子字符串(LeetCode:5485)

    给你一个字符串 s .请返回 s 中最长的 超赞子字符串 的长度. 「超赞子字符串」需满足满足下述两个条件: 该字符串是 s 的一个非空子字符串 进行任意次数的字符交换后,该字符串可以变成一个回文字符 ...

  5. leetcode5485. 找出最长的超赞子字符串

    给你一个字符串 s .请返回 s 中最长的 超赞子字符串 的长度. 「超赞子字符串」需满足满足下述两个条件: 1.该字符串是 s 的一个非空子字符串 2.进行任意次数的字符交换重新排序后,该字符串可以 ...

  6. Leetcode5485. 找出最长的超赞子字符串【第 32 场双周赛】

    题目链接 题意:给你一个字符串 SSS.请返回 SSS 中最长的 超赞子字符串 的长度. 「超赞子字符串」需满足满足下述两个条件: 该字符串是 SSS 的一个非空子字符串 进行任意次数的字符交换重新排 ...

  7. leetcode1542. 找出最长的超赞子字符串

    https://leetcode-cn.com/problems/find-longest-awesome-substring/ 题意: 给你一个字符串 s .请返回 s 中最长的 超赞子字符串 的长 ...

  8. java小编程----给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。

    package com.henu;import java.util.Arrays;/*** @author limengdong* @date 2019年7月19日* @classroom 208bi ...

  9. 约瑟夫环——递推公式详解(leetcode 1823. 找出游戏的获胜者)

    约瑟夫环--递推公式详解(leetcode 1823. 找出游戏的获胜者) 约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知 n 个人(以编号1,2,3-n分别表示)围坐在一张圆桌周围. ...

最新文章

  1. 3大VR虚拟现实产品PK赛:HTC、Oculus、索尼谁是大哥
  2. 预训练模型需要知道的知识点总结,万字长文带你深入学习(建议收藏)
  3. Bean的解析与注册
  4. [摘抄]一些软件设计的原则
  5. java怎么确定数据在区间内_处理数据时,单元格内内容太多无法计数怎么破?...
  6. [Link]NoSQL
  7. java jtextfield 居中_有什么办法可以使JFrame的中心居中吗? - java
  8. 如果你想靠写作变现,一定要看看下面这3点
  9. 服务器如果选用CPU
  10. android checkbox点击,android的CheckBox点击全选信息反馈不正常,该如何解决
  11. 关于DMM实现定位功能(二)—react-native-amap3d的配置简单使用
  12. 平淡中,一直追梦的人 ----访济南市城市规划设计院副总工程师田洁
  13. android 方向传感器应用
  14. HBase(2):HBase数据模型
  15. codeforces 869 E. The Untended Antiquity(树状数组)
  16. 知识欠缺到沙漠化了吧
  17. Python爬取《哆啦A梦-伴我同行2》影评,这部的寓意是啥?词云来剧透!
  18. 如何正确地给固态硬盘(SSD)分区
  19. 数据库中的多表联查(四表联查)
  20. python画三维立体图完整代码_如何用Matplotlib 画三维图的示例代码

热门文章

  1. Java 实现 Html 转 pdf
  2. 【开发教程13】AI语音人脸识别(会议记录仪/人脸打卡机)-语音传输与解析显示
  3. 因为一封建议邮件,被蜗牛学院直接开除的故事。
  4. 蜗牛学院SpringBoot第一周总结
  5. Jmeter增加线程下级循环设置forever,来减少施压端线程创建及销毁的开销
  6. 芯片手册中常见的Die id
  7. 2021寒假学习计划
  8. 职称计算机做点题就行,2020职称计算机模拟考试练习题130
  9. iPhone 7越狱:19岁黑客称其只用了24小时
  10. Home Windows Windows 8 Androi...