当前位置: 首页> 汽车> 报价 > 莱芜雪野湖国际会议中心_常用的cms建站系统_镇江网站建设_百度搜索优化平台

莱芜雪野湖国际会议中心_常用的cms建站系统_镇江网站建设_百度搜索优化平台

时间:2025/7/13 6:17:18来源:https://blog.csdn.net/2301_80689220/article/details/143580796 浏览次数: 0次
莱芜雪野湖国际会议中心_常用的cms建站系统_镇江网站建设_百度搜索优化平台

1.题目解析

题目来源 

97.交错字符串——力扣

 测试用例

2.算法原理

1.状态表示

这里需要判断能否可以使用s1与s2来交错组成s3,所以不妨将s1与s2分为两个区间,这样的话s3就是s1与s2区间长度的和,这里将三个字符串开头均加上空格可以使下标映射更加简单,即

dp[i][j]:s1的[1,i]区间与s2的[1,j]区间是否可以交错组成s3的[1,i+j]区间

2.状态转移方程

状态转移方程这里使用s1与s2的末尾与s3的末尾作对比来进行填表,详细解析如下:

3.初始化

这里引入了空字符串进行虚拟位置的初始化,下图就是对虚拟位置初始化的详细解析

4.填表顺序

从左到右,每一行从上到下

5.返回值 

从状态表示可知只需要返回dp表的最后一个位置dp[m][n]即可

3.实战代码 

代码解析

class Solution {
public:bool isInterleave(string s1, string s2, string s3) {int m = s1.size();int n = s2.size();vector<vector<bool>> dp(m+1,vector<bool>(n+1));if(m + n != s3.size()){return false;}s1 = " " + s1,s2 = " " + s2, s3 = " " + s3;dp[0][0] = true;for(int i = 1;i <= m;i++){if(s1[i] == s3[i]){dp[i][0] = true;}else {break;}}    for(int j = 1;j <= n;j++){if(s3[j] == s2[j]){dp[0][j] = true;}else {break;}}    for(int i = 1;i <= m;i++){for(int j = 1;j <= n;j++){dp[i][j] = (s1[i] == s3[i+j] && dp[i-1][j])|| (s2[j] == s3[i+j] && dp[i][j-1]);}}return dp[m][n];}
};
关键字:莱芜雪野湖国际会议中心_常用的cms建站系统_镇江网站建设_百度搜索优化平台

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: