LeetCode - 005最長回文サブストリング

説明

文字列sを考えると、秒で最長の回文構造部分文字列を見つけます。あなたは、sの最大の長さが1000であると仮定してもよいです。

**例1:**

Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.

**例2:**

Input: "cbbd"
Output: "bb"

** 解決: **

対称性のアイデアで使用
し、最初から横断し、各文字は約外方拡散のために、判断がパリンドロームでない部分文字列を
指摘し、2つの方法で広がっは、まず、中央の文字は、広がっています2番目の文字が文字であると右端が、その外方拡散が開始します

class Solution {
public:
    string longestPalindrome(string s) {
        string res = "";
        for (int i = 0; i < s.length(); ++i)
        {
            help(s, i - 1, i + 1, res);//奇数类型的中心向两边扩撒
            help(s, i, i + 1, res);//偶数类型的中心向两边扩撒           
        }
        return res;
    }
    void help(const string &s, int L, int R, string &res)
    {
        while (L >= 0 && R < s.length())
        {
            if (s[L] != s[R])break;
            --L;
            ++R;
        }
        if (R - L - 1 > res.length())
            res = s.substr(L + 1, R - L - 1);
    }
};

おすすめ

転載: www.cnblogs.com/zzw1024/p/12334059.html