leetcode-97. 交错字符串
题目:
代码:
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
using namespace std;
bool isInterleave(string s1, string s2, string s3) {
int p;
int m=s1.size(),n=s2.size(),t=s3.size();
vector<vector<int> >f(m+1,vector<int>(n+1,0));
if(t!=m+n){
return false;
}
f[0][0]=1;
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++){
p=i+j-1;
if(i>0){
f[i][j] |=(f[i-1][j] && s1[i-1]==s3[p]);
}
if(j>0){
f[i][j] |=(f[i][j-1] && s2[j-1]==s3[p]);
}
}
}
return f[m][n];
}
int main(){
bool res;
string s1,s2,s3;
cin>>s1>>s2>>s3;
res=isInterleave(s1,s2,s3);
if(res){
cout<<"true";
}else{
cout<<"false";
}
return 0;
}