• 5、最长回文子串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"

    把题目放着,先想想^^
    2017-10-27 14:46更新如下:

    可以用类似例四的方法,计算每个子串是否回文,额,

    15:58 终于完成啦~~在LeetCode提交好多次,终于accept!
    class Solution {
    public:
        string longestPalindrome(string s) {
            int i, ii, k, n=s.length();
            for( k = n; k > 0; k--){
                for( i = 0; i < n - k + 1; i++){
                    ii=i;
                    int j = k + i - 1;
                    while(ii <= j){
                        if(s[ii++] != s[j--]){
                            break;
                        }
                        if(ii > j) return s.substr( i, k );
                    }
                }
            }
        }
    };

      k代表这一轮要比较的字串都是长度为k。长度为k,即s[ i,k + i - 1 ]这个子串,且i的取值范围0 ~ n - k。

      取子串之后,开始计算这个子串:比较这个子串第一个字母和最后一个字母是否相等(如S=abbacc的一个子串s=abba,第一个字母和最后一个字母都是a),不相等的话进行下一个子串,相等的话,比较第二个字母和倒数第二个字母(如s=abba,s[1] ==s[3],都是'b')......当到了i > j 时,说明这个就是回文。

      因为是从最大长度开始比较,即k从n开始减小,所以计算过程中只要遇到一个回文,那么这个回文就是最大长度回文,之后的k都小于当前的长度k,所以遇到一个回文就是最大长度回文,不必再向下寻找。

    16:15:48

  • 相关阅读:
    常用的字符串内建函数(三)
    常用的字符串内建函数(二)
    常用的字符串内建函数(一)
    Python 运算符
    Python标准数据类型--数字类型
    HTTPS及免费证书获取
    try...catch...finally
    加密和SSH认证
    全表更新锁表
    秩和比
  • 原文地址:https://www.cnblogs.com/hozhangel/p/7739645.html
Copyright © 2020-2023  润新知