5.最长回文子串

1.Go

方法1:

方法2:

2.C++

方法1:

//回文子串有两种形式:aba abba 所以分两种遍历方式进行遍历 分别起始为a向两边扩散  以及起始为aa向两边扩散

class Solution {
public:
    int maxi=-1,maxj=-1,maxlen=-1;
    void findres(string&s,int idx,int start){
        int l=idx,r=idx;
        if (start==2) l=idx-1;
        while(l>=0 && r<s.size()){
            if (s[l]==s[r]){
                if (maxlen<r-l+1){maxlen=r-l+1;maxi=l;maxj=r;}
                l--;
                r++;
            }else break;
        } 
    }

    string longestPalindrome(string s) {
        //有两种遍历方式 一种是以1为
        s.insert(s.begin(),'#');
        for (int i=1;i<s.size();i++){
            findres(s,i,1);
            findres(s,i,2);
        }
        return s.substr(maxi,maxlen);
    }
};

  

方法2:

上一篇:402. 移掉 K 位数字


下一篇:使用Kmeans聚类分析对复杂的数据进行分类