fork download
  1. public class Main {
  2. public static void main(String[] args) {
  3. String s = "aaa";
  4. System.out.println(countPalindromes(s));
  5. }
  6.  
  7. public static int countPalindromes(String s) {
  8. int n = s.length();
  9. boolean[][] dp = new boolean[n][n];
  10. int maxlen = 0;
  11.  
  12. // Length = 1 (single characters)
  13. for (int i = 0; i < n; i++) {
  14. dp[i][i] = true;
  15. maxlen=1;
  16. }
  17.  
  18. // Length = 2
  19. for (int i = 0; i < n - 1; i++) {
  20. if (s.charAt(i) == s.charAt(i + 1)) {
  21. dp[i][i + 1] = true;
  22. maxlen=2;
  23. }
  24. }
  25.  
  26. // Length >= 3
  27. for (int len = 3; len <= n; len++) {
  28. for (int i = 0; i <= n - len; i++) {
  29. int j = i + len - 1;
  30.  
  31. if (s.charAt(i) == s.charAt(j) && dp[i + 1][j - 1]) {
  32. dp[i][j] = true;
  33. maxlen=len;
  34. }
  35. }
  36. }
  37.  
  38. return maxlen;
  39. }
  40. }
Success #stdin #stdout 0.07s 54536KB
stdin
Standard input is empty
stdout
3