LeetCode 5. Longest Palindromic Substring(C++)
2017-03-25 22:17
609 查看
问题:找字符串中的最长回文子串
思路:
设立两个标志pre和after从每个字符开始向左右两边查询,如果s[pre]!=s[after]或者超出范围,那么该字符出发的最长回文子串为s[pre+1,...,after-1]。
初始状态分别为pre=after=i和pre=i,after=i+1对应ABA和ABBA两种不同的回文情况。
遍历维护maxLen即可找到最长回文子串。
思路:
设立两个标志pre和after从每个字符开始向左右两边查询,如果s[pre]!=s[after]或者超出范围,那么该字符出发的最长回文子串为s[pre+1,...,after-1]。
初始状态分别为pre=after=i和pre=i,after=i+1对应ABA和ABBA两种不同的回文情况。
遍历维护maxLen即可找到最长回文子串。
class Solution { public: string longestPalindrome(string s) { int pre = 0,after = 0; int maxLen = 0; string result; for(int i=0;i<s.length();i++) { pre = i; after = i; while(1) { if(pre<0 || after>s.length()-1 || s[pre]!=s[after]) { if((after-1)-(pre+1)+1>maxLen) { maxLen = (after-1)-(pre+1)+1; result = s.substr(pre+1,maxLen);//用下标pre+1开始,截取长度为maxLen的子串 } break; } pre--; after++; } } for(int i=0;i<s.length()&&s.length()>=2;i++) { pre = i; after = i+1; while(1) { if(pre<0 || after>s.length()-1 || s[pre]!=s[after]) { if((after-1)-(pre+1)+1>maxLen) { maxLen = (after-1)-(pre+1)+1; result = s.substr(pre+1,maxLen);//用下标pre+1开始,截取长度为maxLen的子串 } break; } pre--; after++; } } return result; } };
相关文章推荐
- LeetCode刷题(C++)——Longest Palindromic Substring(Medium)
- Leetcode_longest-palindromic-substring(c++ and python version)
- 【C++】【LeetCode】5. Longest Palindromic Substring
- LeetCode 5 : Longest Palindromic Substring(C++)
- [LeetCode] 005. Longest Palindromic Substring (Medium) (C++/Java/Python)
- [C++]LeetCode 5: Longest Palindromic Substring(最长回文子串)
- LeetCode 5 Longest Palindromic Substring(C,C++,Python,Java)
- [C++]LeetCode: 99 Longest Palindromic Substring (最长回文子串)
- [LeetCode]5 Longest Palindromic Substring(C++,Python实现)
- [LeetCode] Longest Palindromic Substring [14]
- LeetCode 5 : Longest Palindromic Substring ---- 最长回文
- [LeetCode] 045: Longest Palindromic Substring
- [编程练习]Longest Palindromic Substring <LeetCode-5>
- Leetcode 5 Longest Palindromic Substring
- [leetcode]Longest Palindromic Substring @ Python
- LeetCode Longest Palindromic Substring
- [LeetCode] Longest Palindromic Substring
- leetcode 5 Longest Palindromic Substring--最长回文字符串
- LeetCode:Longest Palindromic Substring 最长回文子串
- Leetcode||5.Longest Palindromic Substring