5-leetcode-Longest Palindromic Substring

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example:

Input: "babad"

Output: "bab"

Note: "aba" is also a valid answer.

Example:

Input: "cbbd"

Output: "bb"

解题思路:

从当前一个字符开始,然后从字符串中最后一个进行判断是不是一个回文数,最终找到最长的,结束判断。

Code

class Solution {
public:
    string longestPalindrome(string s) {
        bool isLongestPad = false;
        string longestPad = s.substr(0,1);
        for(int j = 0; j < s.size(); ++j){
            if(s.size()-j-1 < longestPad.size()) break;
            for(int i = s.size()-1; i >= 0; --i){
                if(i-j+1 < longestPad.size()) break;
                isLongestPad = false;
                if(s[j] == s[i] && i > j){
                    isLongestPad = subLongestPalindrome(s.substr(j, i-j+1));
                    if(isLongestPad){
                        if(longestPad.size() < i-j+1){
                            longestPad = s.substr(j, i-j+1);
                            break;
                        }
                    }
                }
            }
        }
        return longestPad;
    }
    bool subLongestPalindrome(string s){
        if(s.size() == 1) return true;
        if(s.size() == 2 && s[0] == s[1]) return true;
        int left = 0, right = s.size()-1;
        for(int i = 0; i < s.size()/2; ++i){
            if(right >= left){
                if(s[left] != s[right]) return false;
                else{
                    left++;
                    right--;
                }
            }else break;
        }
        return true;
    }
};


猜你喜欢

转载自blog.csdn.net/u011687724/article/details/78655913