最长回文子串
【摘要】 题目: 给你一个字符串 s,找到 s 中最长的回文子串。思路:遍历s,以每个s[i]为对称轴,向两边扩散,找最长的class Solution {public: string maxStr=""; string findMax(int i,string s){ int left=i,right=i; while(left-1>=0&&right+1<s...
题目: 给你一个字符串 s,找到 s 中最长的回文子串。
思路:
遍历s,以每个s[i]为对称轴,向两边扩散,找最长的
class Solution {
public:
string maxStr="";
string findMax(int i,string s){
int left=i,right=i;
while(left-1>=0&&right+1<s.length()){
left--;
right++;
if(s[left]!=s[right]){
left++;
right--;
break;
}
}
return s.substr(left,right-left+1);
}
string longestPalindrome(string s) {
for(int i=0;i<s.length();i++){
if(findMax(i,s).length()>maxStr.length()){
maxStr=findMax(i,s);
}
}
return maxStr;
}
};
但是发现有问题,少考虑了子串长度为偶数的情况
class Solution {
public:
string maxStr="";
string findMax(int left,int right,string s){
while(left-1>=0&&right+1<s.length()){
left--;
right++;
if(s[left]!=s[right]){
left++;
right--;
break;
}
}
return s.substr(left,right-left+1);
}
string longestPalindrome(string s) {
for(int i=0;i<s.length();i++){
if(findMax(i,i,s).length()>maxStr.length()){
maxStr=findMax(i,i,s);
}
if(i!=s.length()-1&&s[i]==s[i+1]){
if(findMax(i,i+1,s).length()>maxStr.length()){
maxStr=findMax(i,i+1,s);
}
}
}
return maxStr;
}
};
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)