其他分享
首页 > 其他分享> > 5.无重复最大回文字符串

5.无重复最大回文字符串

作者:互联网

给你一个字符串 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   结论:          代码虐我千百遍,我带代码如初恋!!!!!!!!!

标签:string,重复,Max,int,MaxStart,字符串,left,回文
来源: https://www.cnblogs.com/wpgame/p/15935561.html