给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s;
cin>>s;
int len=s.size();
int l,r,max=0,start;//start用来储存i,也就是substr中起始位置
for(int i=0;i<len;i++){
/*让j从i的下一位开始遍历(也就是从字符串长度最小的开始遍历),如果满足条件则j往后走一个,如果也满足条件,那么此时的回文长度比上一轮大*/
for(int j=i+1;j<len;j++){
//用l,r来进行移动,防止i,j被改变
for(l=i,r=j;l<r;l++,r--)//用来判断是否是回文
{
if(s[l]!=s[r]){
break;
}
}
if(l>=r)//说明满足回文条件{
if(max<r-l+1){
max=r-l+1;
start=i;
}
}
}
}
cout<<s.substr(start,max);
return 0;
}
提一嘴substr方法
substr的头文件是#include<cstring>
substr方法用来截取字符串中的某一部分
用法
substr(pos,n)
pos代表从当前位置开始截取,pos不写默认为0,即从第一个字符开始
n是截取的字符个数
例如:
string s="abcdef";
cout<<s.substr(3) -->"abc"
cout<<s.substr(1,3) -->"bcd"