Most ugly one, HAHA
bool isInterleave(string s1, string s2, string s3) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
bool s1_flag, s2_flag;
if (s1.length() + s2.length() != s3.length()) {
return false;
}
if (s3.length() == 0) {
return true;
}
s1_flag = (s1.length() == 0) ? true : (s1[0] == s3[0]);
s2_flag = (s2.length() == 0) ? true : (s2[0] == s3[0]);
if (s1.length() == 0) {
if (!s2_flag) {
return false;
}
return isInterleave(s1, string(s2, 1, s2.length()-1),
string(s3, 1, s3.length()-1));
} else if (s2.length() == 0) {
if (!s1_flag) {
return false;
}
return isInterleave(string(s1, 1, s1.length()-1),
s2, string(s3, 1, s3.length()-1));
} else {
if (s1_flag && s2_flag) {
return isInterleave(string(s1, 1, s1.length()-1),
s2, string(s3, 1, s3.length()-1)) ||
isInterleave(s1, string(s2, 1, s2.length()-1),
string(s3, 1, s3.length()-1));
} else if (s1_flag) {
return isInterleave(string(s1, 1, s1.length()-1),
s2, string(s3, 1, s3.length()-1));
} else if (s2_flag) {
return isInterleave(s1, string(s2, 1, s2.length()-1),
string(s3, 1, s3.length()-1));
} else {
return false;
}
}
}
answered
25 Feb, 22:08
whitebluff
21●2
accept rate:
0%