For example,
Given:
s1 =
"aabcc",s2 =
"dbbca",
When s3 =
"aadbbcbcac", return true.When s3 =
"aadbbbaccc", return false.解题思路:
DP, 和edit distance有点类似
public boolean isInterleave(String s1, String s2, String s3) {
int len1 = s1.length();
int len2 = s2.length();
if(s3.length() != len1 + len2) return false;
boolean[][] match = new boolean[len1+1][len2+1];
for(int i = 0; i <= len1; i++){
for(int j = 0; j <= len2; j++){
if(i == 0 && j == 0){
match[i][j] = true;
}else{
if(j > 0 && s3.charAt(i+j-1) == s2.charAt(j-1)) match[i][j] = match[i][j] || match[i][j-1];
if(i > 0 && s3.charAt(i+j-1) == s1.charAt(i-1)) match[i][j] = match[i][j] || match[i-1][j];
}
}
}
return match[len1][len2];
}
No comments:
Post a Comment