题解 | #密码截取#

密码截取

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

内存和时间都是85以上,还可以继续优化。
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str = sc.next();
            if (str.length() == 1) {
                System.out.println(1);
                return;
            }
            int ama = Math.max(maxLength1(str), maxLength2(str));
            System.out.println(ama);
        }
    }
    
    private static int maxLength2(String str) {
        int max = 0;
        for (int a = 0; a < str.length(); a++) {
            if (a > str.length() - 2) {
                break;
            }
            if (str.charAt(a) != str.charAt(a + 1)) {
                continue;
            }
            int maxCount = 2; // 本次找到得最长长度
            int bMax = Math.max(str.length() - a, a);
            for (int b = 1; b < bMax; b++) {
                if (a + b + 1 >= str.length()) {
                    break;
                }
                if (a - b < 0) {
                    break;
                }
                if (str.charAt(a - b) == str.charAt(a + b + 1)) {
                    maxCount += 2;
                    if (max < maxCount) {
                        max = maxCount;
                    }
                } else {
                    break;
                }
            }
        }
        return max;
    }
    
    private static int maxLength1(String str) {
        int max = 0;
        for (int a = 1; a < str.length(); a++) {
            int maxCount = 1; //本次找到得最长长度
            int bMax = Math.max(str.length() - a, a);
            for (int b = 1; b < bMax; b++) {
                if (a + b > str.length() - 1) {
                    break;
                }
                if (a - b < 0) {
                    break;
                }
                if (str.charAt(a - b) == str.charAt(a + b)) {
                    maxCount += 2;
                    if (max < maxCount) {
                        max = maxCount;
                    }
                } else {
                    break;
                }
            }
        }
        return max;
    }
}


全部评论
分开写,可以看出2者的区别。
点赞 回复 分享
发布于 2021-11-07 22:39

相关推荐

尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
10-11 17:30
湖南大学 C++
我已成为0offer的糕手:羡慕
点赞 评论 收藏
分享
昨天 18:54
门头沟学院 Java
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务