题解 | #密码截取#

密码截取

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

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //读取数据
        Scanner in = new Scanner(System.in);
        String s = in.next();
        //搜索最长的字符串 可以满足密码串的要求
        int length = s.length();
        int[][] ints = new int[length][length];
        for (int i = 0; i < length; i++) {
            for (int j = i + 1; j < length; j++) {
                if (test(s.substring(i, j + 1))) {
                    ints[i][j] = j - i + 1;
                }
            }
        }
        int max = 0;
        for (int i = 0; i < length; i++) {
            for (int j = i + 1; j < length; j++) {
                max = Math.max(max, ints[i][j]);
            }
        }
        System.out.println(max);
    }

    //判断是否是一个密码串
    private static boolean test(String s) {
        int length = s.length();
        for (int i = 0; i < length; i++) {
            if (i + 1 > length / 2) {
                break;
            } else if (s.charAt(i) != s.charAt(length - 1 - i)) {
                return false;
            }
        }
        return true;
    }
}

解题思路:

1, 用i j分别指代可能密码串在字符串中的起始位置;

2, 对每一种情况进行遍历, 如果是满足条件的, 就记录下此时密码串的长度, 并将全部结果存储在数组中;

3, 遍历结果数组, 得到最长的密码串长度

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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