97. Interleaving String
problem description
Input: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
Output: trueInput: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
Output: falsealgorithm thought
code
class Solution {
public:
bool isInterleave(string s1, string s2, string s3) {
if(s1.size()+s2.size()!=s3.size())
return false;
vector<vector<bool>> pos(s1.size()+1,vector<bool> (s2.size()+1,false));
pos[0][0]=1;
for(int i=1;i<=s1.size();++i)
if(pos[i-1][0]&&s1[i-1]==s3[i-1])
pos[i][0]=1;
for(int i=1;i<=s2.size();++i)
if(pos[0][i-1]&&s2[i-1]==s3[i-1])
pos[0][i]=1;
for(int i=1;i<=s1.size();++i)
for(int j=1;j<=s2.size();++j){
if((pos[i-1][j]&&s1[i-1]==s3[i+j-1])||(pos[i][j-1]&&s2[j-1]==s3[i+j-1]))
pos[i][j]=1;
}
return pos[s1.size()][s2.size()];
}
};algorithm analysis
Last updated