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

  • 相关阅读:
    JVM运行参数优化详细教程
    idea 代码热启动配置方法
    Spring MVC拦截器完整代码示例
    Spring MVC异常处理代码完整实例
    Python3基础语法(20190617)
    Java代码生成器Easy Code
    Mybatis @Many注解一对多关联映射
    Mybatis @One注解使用
    Mybatis @ResultMap复用@Result
    Mybatis @Result注解的使用案例
  • 原文地址:https://www.cnblogs.com/hozhangel/p/7739645.html
Copyright © 2011-2022 走看看