思路
- 这道题开始考察了尝试了两个思路,这道题不能简单的从相同的字母的个数是否相等下手。应该要想到字幕出现的顺序。
- 最后使用了递归,但是一直感觉代码的效率不高
代码
String s1;
String s2;
String s3;
String s4;
public Boolean flag = false;
public boolean isInterleave(String s1, String s2, String s3) {
this.s1 = s1;
this.s2 = s2;
this.s3 = s3;
if (s4.length() != s3.length()) {
return false;
}
dfs(0, 0, 0);
return flag;
}
public Boolean dfs (int p1, int p2, int p3) {
if (p3 == s3.length()) {
flag = true;
return true;
}
if (p1 < s1.length() && s1.charAt(p1) == s3.charAt(p3)) {
dfs(p1+1, p2, p3+1);
}
if ( p2 < s2.length()&& s2.charAt(p2) == s3.charAt(p3)) {
dfs(p1, p2+1, p3+1);
}
return false;
}