题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。
        //所谓回文串,指左右对称的字符串。
        //所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int maxLength = 1;//回文子串最小为1
        int left = 0;//左指针
        int right = 0;//右指针
        String[] s = new String[str.length()];
        for (int i = 0; i < str.length(); i++) {
            s[i] = String.valueOf(str.charAt(i));
        }
        int length = s.length;
        for (int i = 1; i < length; i++) {
            if (i + 1 < s.length && s[i - 1].equals(s[i + 1])) {
                right = i + 1;
                left = i - 1;
                while (right<length&&left>=0&&s[right].equals(s[left])) {
                    maxLength = Math.max(right - left + 1, maxLength);
                    left--;
                    right++;
                }
            }
            if (i - 1 >= 0 && s[i].equals(s[i - 1])) {
                right = i;
                left = i - 1;
                while (right<length&&left>=0&&s[right].equals(s[left])) {
                    maxLength = Math.max(right - left + 1, maxLength);
                    left--;
                    right++;
                }

            }
        }
        System.out.println(maxLength);

        in.close();
    }
}

全部评论

相关推荐

投递腾讯等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务