• [LeetCode]5. 最长回文子串


    题目


    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
    
    示例 1:
    
    输入: "babad"
    输出: "bab"
    注意: "aba"也是一个有效答案。
    示例 2:
    
    输入: "cbbd"
    输出: "bb"

    代码


    class Solution {
    public:
        string longestPalindrome(string s) {
            int stepEven=0;
            int stepOdd=0;
            int max=0;
            int isOdd=false;
            int pos=0;
            for(int i=0;i<s.length();i++)
            {
                //奇数
                for(int step=0;(i-step>=0)&&(i+step<s.length());step++)
                {
                    if(s[i-step]!=s[i+step])
                        break;
                    stepOdd=step*2+1;
                }
    
                if(stepOdd>max)
                {
                    max=stepOdd;
                    isOdd=true;
                    pos=i;
                }
                //偶数
                for(int step=1;(i-step+1>=0)&&(i+step<s.length());step++)
                {
                    if(s[i-step+1]!=s[i+step])
                        break;
                    stepEven=step*2;
                }
                if(stepEven>max)
                {
    
                    max=stepEven;
                    isOdd=false;
                    pos=i;
                }
    
            }
            string result;
            if(isOdd)
            {
                result=s.substr(pos-(max-1)/2,max);
    
            }
            else
            {
                result=s.substr(pos-max/2+1,max);
            }
            return result;
    
        }
    };

    思路


    采用中心扩展法,一共要考虑两种情况:第一种就是回文字符串长度为奇数,从最中间的那个字符开始比较的话是比较它左右的字符串,比如"11322",从3开始比较;第二种就是回文字符串长度为偶数,如果是"2112"的话,那么最开始比较的是第一个1;比较完后返回字符串的时候要分别考虑奇偶来切分子串。

    https://github.com/li-zheng-hao
  • 相关阅读:
    ArrayList、Vector、LinkedList的区别联系?
    TFFS格式化到创建成功过程
    C语言中的far关键字
    Android编码规范05
    微信小程序开发总结
    1-2 Mobx 入门实践之TodoList(官方Demo)
    1-1、create-react-app 配置 mobx
    3-0 js基础 语言特性及性能优化
    2-9 js基础 cookie封装
    2-8 js基础 jsonp封装
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053680.html
Copyright © 2020-2023  润新知