LeetCode --5 Longest Palindromic Substring

My solution:

class Solution {
public:
    int isPalindromic(string s, int size, int len){
        for(int i=0; i+size<=len; i++){
            //check s[i]~s[i+size-1]
            int j = 0;
            while(j<size/2){
                if(s[i+j] != s[i+size-1-j])
                    break;
                j+=1;
            }
            if(j==size/2) return i;
        }
        return -1;
    }
    string longestPalindrome(string s) {
        int len = s.size();
        for(int sublen = len; sublen>0; sublen--){
            int ret = isPalindromic(s, sublen, len);
            if(ret>=0) return s.substr(ret, sublen);
        }
        return s;
    }
};

Other guy's solution:

class Solution {
public:
    string longestPalindrome(string s) 
    {
        int sLen = s.length(), maxLen = 0, maxStart = 0;
        int i = 0, l = 0, r = 0, len = 0;
        while(i<=sLen-maxLen/2)
        {
            l = r = i;
            while(r<sLen-1 && s[r+1]==s[r]) r++;
            i = r+1;
            while(l>0 && r<sLen-1 && s[r+1]==s[l-1]) l--, r++;
            len = r-l+1;
            if(maxLen < len) maxLen = len, maxStart = l;
        }
        return s.substr(maxStart, maxLen);
    }
};

  

猜你喜欢

转载自www.cnblogs.com/feliz/p/10942755.html