力扣 -- 97. 交错字符串
解题步骤:
参考代码:
class Solution {
public:bool isInterleave(string s1, string s2, string s3) {int m=s1.size();int n=s2.size();//先判断s1的长度+s2的长度是否等于s3的长度,如果不等,则s1和s2不可能拼接成s3if(m+n!=s3.size()){return false;}//处理下标映射关系s1=' '+s1;s2=' '+s2;s3=' '+s3;vector<vector<bool>> dp(m+1,vector<bool>(n+1));//初始化第一行dp[0][0]=true;for(size_t j=1;j<=n;j++){if(s2[j]==s3[j]){dp[0][j]=true;}else{break;}}//初始化第一列for(size_t i=1;i<=m;i++){if(s1[i]==s3[i]){dp[i][0]=true;}else{break;}}//填表//参考状态转移方程for(size_t i=1;i<=m;i++){for(size_t j=1;j<=n;j++){if(s1[i]==s3[i+j]&&dp[i-1][j]){dp[i][j]=true;}else if(s2[j]==s3[i+j]&&dp[i][j-1]){dp[i][j]=true;}}}//返回值return dp[m][n];}
};
你学会了吗???