给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:遍历s中每个字符,以该字符为中心,判断回文长度,并与最大MAX长度比较。
应用方法:string s.substr(int start,int length);
解题:
class Solution { public: string longestPalindrome(string s) { int Max=0; int MaxStart=-1; int left; int right; int chongfu=1; if(s.length()<2){ return s; } for(int i=0;i<s.length();i++){ left=i; right=i; chongfu=1; //判断重复字符状态码,为1则判断,为0则不判断 while(left>=0&&right<s.length()){ if(s[left]==s[right+1]&&chongfu==1){ //过滤重复字符;初始判断回文时需过滤重复字符 right++; //判断完毕后归0,不在判断 continue; } else{ chongfu=0; } if(left!=0&&right!=s.length()-1&&s[left-1]==s[right+1]){ left-=1; right+=1; } else { break; } } if(right-left+1>Max){ Max=right-left+1; MaxStart=left; } } return s.substr(MaxStart,Max); } };执行用时:16 ms, 在所有 C++ 提交中击败了90.91%的用户 内存消耗:6.9 MB, 在所有 C++ 提交中击败了95.11%的用户 通过测试用例:180 / 180 结论: 代码虐我千百遍,我带代码如初恋!!!!!!!!!