题解 | #最长回文子串#,两种情况,简单得很

最长回文子串

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

import java.util.Scanner;


// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String next = in.next();
            int count1 = getStr1(next);
            int count2 = getStr2(next);
            System.out.println(Math.max(count1,count2));
        }
    }

    private static int getStr2(String next) {
        char[] chars = next.toCharArray();
        int maxCount = 0;
        for (int i = 0; i < chars.length - 2; i++) {
            if(chars[i] == chars[i+2]){
                int count = 3;
                for (int j = i - 1,z = i + 3; j >= 0 && z < chars.length; j--,z++) {
                    if (chars[j] == chars[z]){
                        count += 2;
                        continue;
                    }
                    break;
                }
                maxCount = Math.max(maxCount, count);
            }
        }
        return maxCount;
    }

    public static int getStr1(String str) {
        char[] chars = str.toCharArray();
        int maxCount = 0;
        for (int i = 0; i < chars.length - 1; i++) {
            if (chars[i] == chars[i + 1]) {
                int count = 2;
                for (int j = i - 1, z = i + 2; j >= 0 && z < chars.length; j--, z++) {
                    if (chars[j] == chars[z]) {
                        count += 2;
                        continue;
                    }
                    break;
                }
                maxCount = Math.max(maxCount, count);
            }
        }
        return maxCount;
    }
}

全部评论

相关推荐

04-15 14:58
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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