月底跳一张AA一张old BC三张Chase可以吗?# Money - 海外理财
g*j
1 楼
哪位大牛帮我看看这个代码,为什么leetcode online judge的small的都过了,large
的就过不了了?
test case 如下,说Time Limit Error, 是不是递归的算法太烂了? 不至于这个都处
理不了吧?
"
bbbbbabbbbabaababaaaabbababbaaabbabbaaabaaaaababbbababbbbbabbbbababbabaababa
bbbaabababababbbaaababaa",
"
babaaaabbababbbabbbbaabaabbaabbbbaabaaabaababaaaabaaabbaaabaaaabaabaabbbbbbb
bbbbabaaabbababbabbabaab",
"
babbbabbbaaabbababbbbababaabbabaabaaabbbbabbbaaabbbaaaaabbbbaabbaaabababbaaa
aaabababbababaababbababbbababbbbaaaabaabbabbaaaaabbabbaaaabbbaabaaabaababaab
abbaaabbbbbabbbbaabbabaabbbbabaaabbababbabbabbab"
class Solution {
public:
bool isInterleave(string s1, string s2, string s3) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(!s1.length() && !s2.length() && !s3.length()) return true;
if(s3.length() != s1.length() + s2.length()) return false;
if(!s1.length()) return s2 == s3;
if(!s2.length()) return s1 == s3;
if(s3[0]!=s2[0] && s3[0]!= s1[0]) return false;
bool first = false;
bool second = false;
if(s3[0] == s1[0]) {
first = isInterleave(s1.substr(1,s1.length()-1), s2, s3.substr(1
, s3.length()-1));
if(first) return first;
}
if(s3[0] == s2[0]) {
second = isInterleave(s1, s2.substr(1,s2.length()-1), s3.substr(
1, s3.length()-1));
if(second) return second;
}
return false;
}
};
的就过不了了?
test case 如下,说Time Limit Error, 是不是递归的算法太烂了? 不至于这个都处
理不了吧?
"
bbbbbabbbbabaababaaaabbababbaaabbabbaaabaaaaababbbababbbbbabbbbababbabaababa
bbbaabababababbbaaababaa",
"
babaaaabbababbbabbbbaabaabbaabbbbaabaaabaababaaaabaaabbaaabaaaabaabaabbbbbbb
bbbbabaaabbababbabbabaab",
"
babbbabbbaaabbababbbbababaabbabaabaaabbbbabbbaaabbbaaaaabbbbaabbaaabababbaaa
aaabababbababaababbababbbababbbbaaaabaabbabbaaaaabbabbaaaabbbaabaaabaababaab
abbaaabbbbbabbbbaabbabaabbbbabaaabbababbabbabbab"
class Solution {
public:
bool isInterleave(string s1, string s2, string s3) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(!s1.length() && !s2.length() && !s3.length()) return true;
if(s3.length() != s1.length() + s2.length()) return false;
if(!s1.length()) return s2 == s3;
if(!s2.length()) return s1 == s3;
if(s3[0]!=s2[0] && s3[0]!= s1[0]) return false;
bool first = false;
bool second = false;
if(s3[0] == s1[0]) {
first = isInterleave(s1.substr(1,s1.length()-1), s2, s3.substr(1
, s3.length()-1));
if(first) return first;
}
if(s3[0] == s2[0]) {
second = isInterleave(s1, s2.substr(1,s2.length()-1), s3.substr(
1, s3.length()-1));
if(second) return second;
}
return false;
}
};