使用的是中心扩散法。
如当abeba
是回文字符串的时候,去掉两边的a,beb
也是回文字符串
当abc
不是回文字符串的时候,两边都加上一样的字母eabce
也不是回文字符串
另外这里要区分字符串为奇数和偶数的情况
奇数:中心点是什么元素不用管
偶数:中心点两个元素要相同
所以这里扫描一遍字符串,对每一个字符都进行一次中心扩散法,来找到最长字串
class Solution {
private:
int substringlen(int l , int r , string s){
while(l >= 0 && r < s.size() && s[l] == s[r]){
-- l; ++ r;
}
return r - l -1;
}
public:
string longestPalindrome(string s) {
int len = 0; int start = 0;
int n = s.size();
for(int i = 0 ; i < n ; ++ i){
int curlen = max( substringlen(i,i,s),substringlen(i, i+1, s));
if(curlen > len){
len = curlen;
start = i - (len - 1) / 2;
}
}
return s.substr(start,len);
}
};
昨天今天收到了好多考研的同学上岸的消息啊
她们真的好厉害,恭喜恭喜🎉
自己接下来一定要更加努力的学习,找到一份工作啊
加油加油加油