题解 | #密码截取#

密码截取

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);
    }
}

全部评论

相关推荐

想申请延毕了,找工作找到崩溃,越找就越想摆烂,还有25届的和我一样感受吗?
码农索隆:没事哒,好兄弟,慢慢来,调整心态,车到山前必有路,感到迷茫的时候,多抬头看看
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务