1class Solution {2public boolean checkPartitioning(String s) {3int n = s.length();4boolean[][] dp = new boolean[n][n];5for (int g = 0; g < n; g++) {6for (int i = 0, j = g; j < n; j++, i++) {7if (g == 0) dp[i][j] = true;8else if (g == 1) dp[i][j] = (s.charAt(i) == s.charAt(j)) ? true : false;9else {10dp[i][j] = (dp[i + 1][j - 1] & ((s.charAt(i) == s.charAt(j)) ? true : false));11}12}13}14for (int i = 0; i < n - 2; i++) {15if (dp[0][i]) {16for (int j = i + 1; j < n - 1; j++) {17if (dp[i + 1][j] && dp[j + 1][n - 1]) {18return true;19}20}21}22}23return false;24}25}