Untitled
unknown
plain_text
a year ago
1.1 kB
10
Indexable
class Solution {
public boolean isInterleave(String s1, String s2, String s3) {
int n = s1.length();
int m = s2.length();
int p = s3.length();
int[][][] dp = new int[n + 1][m + 1][p + 1];
for (int[][] array : dp) {
for (int[] arr : array) {
Arrays.fill(arr, -1);
}
}
return isInterLeave(0,0,0, s1, s2, s3);
}
private boolean isInterLeave(int i, int j, int k, String s1, String s2, String s3) {
if (k == s3.length() && i == s1.length() && j == s2.length()) {
return true;
}
if (k >= s3.length() && (i < s1.length() || j < s2.length())) {
return false;
}
if (i < s1.length() && s1.charAt(i) == s3.charAt(k)) {
if (isInterLeave(i + 1, j, k + 1, s1, s2, s3)) {
return true;
}
}
if (j < s2.length() && s2.charAt(j) == s3.charAt(k)) {
if (isInterLeave(i, j + 1, k + 1, s1, s2, s3)) {
return true;
}
}
return false;
}
}Editor is loading...
Leave a Comment