题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String str=in.nextLine(); System.out.println(getLen(str)); } public static int getLen(String str) { boolean[][]dp=new boolean[str.length()][str.length()]; if(str.length()<2) return str.length(); for(int i=0;i<str.length();i++) dp[i][i]=true; int maxlen=0; for(int len=1;len<=str.length();len++) { for(int j=0;j<str.length();j++) { int i=j+len-1; if(i>=str.length()) break; if(i<str.length()&&str.charAt(i)==str.charAt(j)) { if(i-j<3) dp[j][i]=true; else dp[j][i]=dp[j+1][i-1]; } else{ dp[j][i]=false; } if(dp[j][i]==true) maxlen=Math.max(maxlen,i-j+1); } } return maxlen; } }