zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    aa
    ECS上搭建Docker(CentOS7)
    mysql时间戳转日期
    rsync用法
    docker安装mysql8
    使用Docker安装mysql,挂载外部配置和数据
    my.cnf
    Centos7通过yum安装jdk8
    maven添加本地包命令mvn install:install-file
    Mysql——查看数据库,表占用磁盘大小
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053680.html
Copyright © 2011-2022 走看看