天天看點

華為考題5-最長回文子串

華為考題5-最長回文子串

1、暴力解法

class Solution {
public:
    string longestPalindrome(string s) {
        
        int n = s.size();
        if(n < 2)return s;
        int begin = 0;
        int maxlen = 1;  
        string ans;    
        for(int i = 0; i < n-1; i++)
        {
            for(int j = i+1; j < n; j++)
            {
                if((j-i+1>maxlen) && isvalid(s,i,j))
                {
                    maxlen = j - i + 1;
                    begin = i;
                }
            }
        }
        ans = s.substr(begin,maxlen);
        if(ans.size() == 0)
        {
            ans = s.substr(0,1);
        }
        return ans;
    }

    bool isvalid(string s,int begin,int end)
    {
        while(begin < end)
        {
            if(s[begin] != s[end])
            {
                return false;
            }else{
                begin++;
                end--;
            }
        }
        return true;
    }
};
           
華為考題5-最長回文子串

繼續閱讀