zoukankan      html  css  js  c++  java
  • [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 1:

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

    Example 2:

    Input: "cbbd"
    Output: "bb"

    最长回文字串

    回文字符串的特征就是轴对称,根据中间字符轴对称,如果字符是偶数个,那么根据中间空字符对称,如果字符是奇数个,那么根据中间字符对称。

    对于长度为n的字符,这样的中心点一共有2N-1个。

    从中间向两边展开,观察两边的字符是否相同。

    class Solution {
    public:
        string longestPalindrome(string s) {
            int n = s.size();
            if (n == 0)
                return "";
            string res = s.substr(0, 1);
            for (int i = 0; i < n-1; ++i)
            {
                string s1 = judge(s, i, i);
                if (s1.size() > res.size())
                    res = s1;
                string s2 = judge(s, i, i+1);
                if (s2.size() > res.size())
                    res = s2;
            }
            return res;
        }
        
        string judge(string s, int i, int j)
        {
            while (i >= 0 && j < s.size() && s[i] == s[j])
            {
                i--;
                j++;
            }
            return s.substr(i+1, j-i-1);
        }
    };
  • 相关阅读:
    灭霸-个人冲刺第四天
    单词统计
    第十周总结
    灭霸-个人冲刺第三天
    07-代码大全阅读笔记之一
    灭霸-个人冲刺第二天
    灭霸-个人冲刺第一天
    06-梦断代码阅读笔记之三
    团队项目-用户场景分析
    第九周总结
  • 原文地址:https://www.cnblogs.com/immjc/p/9301769.html
Copyright © 2011-2022 走看看