题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
简单dp解决
import java.util.*; // 注意类名必须为 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 str = in.nextLine(); System.out.println(getString(str)); } } public static int getString(String str){ if(str.length()<=1){ return str.length(); } int max=1; boolean[][] dp =new boolean[str.length()][str.length()]; for(int i=0;i<str.length();i++){ dp[i][i]=true; } for(int i=str.length()-1;i>=0;i--){ for(int j=i+1;j<str.length();j++){ if(str.charAt(i)==str.charAt(j)){ if(j-i<=2){ dp[i][j]=true; }else{ dp[i][j]=dp[i+1][j-1]; } if(dp[i][j]){ max=Math.max(max, j-i+1); } } } } return max; } }