最长的回文子串
2017-09-05 13:26
176 查看
Catcher 是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
输入描述:
输出
输入
输出
思路:遍历一遍,对每个字符进行ABA/ABBA型判断,保存最长的长度。
输入描述:
输入一个字符串
输出
返回有效密码串的最大长度
输入
ABBA
输出
4
思路:遍历一遍,对每个字符进行ABA/ABBA型判断,保存最长的长度。
#include <iostream> #include <string> using namespace std; int test(){ string s; int i, j; while (cin >> s){ int R = 1; for (i = 1; i < s.length() - 2; i++){ // ABA型长度 for (j = 1; i - j >= 0 && i + j<s.size() && s[i - j] == s[i + j]; j++); // 求s[i-j..i+1]长度,本来应该是(i+j)-(i-j)+1,但for后j再做了一次++操作因此需要再-2 if (j * 2 - 1>R) R = j * 2 - 1; for (j = 0; i - 1 - j >= 0 && i + j<s.size() && s[i - 1 - j] == s[i + j]; j++); // ABBA型长度 if (j * 2>R) R = j * 2; } cout << R << endl; } return 0; }
相关文章推荐
- 最长回文子串
- 后缀树与最长回文子串
- 浅谈manacher算法 最长回文子串(Longest Palindromic Substring)
- Longest Palindromic Substring 最长回文子串
- Manacher 算法详解:O(n) 复杂度求最长回文子串
- Manacher马拉车算法求最长回文子串
- lintcode最长回文子串(Manacher算法)
- 最长回文子串的查找
- 最长回文子串
- 总结最长回文子串的几种做法 Longest Palindrome Substring
- manacher算法求最长回文子串(Longest Palindromic Substring)
- Longest Palindromic Substring(最长回文子串)
- URAL 1297 Palindrome(最长回文子串:后缀数组)
- Ural1297 最长回文子串(后缀数组+RMQ)
- java常用算法之最长回文子串(Longest Palindromic Substring)
- [LeetCode] Longest Palindromic Substring 最长回文子串
- 求最长回文子串(一)
- 5. Longest Palindromic Substring(最长回文子串 manacher 算法)
- HDU 3294 Girls' research【最长回文子串】
- hiho1032 : 最长回文子串