题解 | #密码截取#
密码截取
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, 遍历结果数组, 得到最长的密码串长度

