题解 | #密码截取#

密码截取

https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 最长回文子串
 */
public class Main {
    public static void main(String[] args) {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        String a;
        try {
            a = r.readLine();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        char[] chs = a.toCharArray();
        int i = 0, m, n, l, ans;
        l = chs.length;
        int[] dp = new int[l];
        do {//当回文字串长度是奇数
            m = i;
            n = i;
            ans = -1;
            do {
                if (chs[m] == chs[n]) ans += 2;//初始长度为1
                else break;//否则跳出遍历寻找
                m++;
                n--;
            } while (m < l && n > -1);
            dp[i] = ans;
            i++;
        } while (i < l);
        if (l == 1) {//总的字符串长度是1,直接返回1
            System.out.print(1);
            return;
        }
        i = 0;
        do {//偶数
            m = i + 1;
            n = i;
            ans = 0;
            do {
                if (chs[m] == chs[n]) ans += 2;//偶数初始为0,之后加2
                else break;//否则跳出遍历寻找
                m++;
                n--;
            } while (m < l && n > -1);
            dp[i] = Math.max(ans, dp[i]);
            i++;
        } while (i < l - 1);
        i = 0;
        ans = 0;
        do {
            ans = Math.max(ans, dp[i]);
            i++;
        } while (i < l - 1);
        System.out.print(ans);
    }
}

全部评论

相关推荐

04-03 11:37
武汉大学 Java
高斯林的信徒:武大简历挂?我勒个骚岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务