Leetcode 97. Interleaving String
来源:互联网 发布:qq飞车s车时空战舰数据 编辑:程序博客网 时间:2024/05/23 01:17
97. Interleaving String
三个字符串s1,s2,s3,判断s3是前两个字符串交织所得例如:
s1="aabcc"
,s2="dbbca"
,
When s3 = "aadbbcbcac"
, return true.
When s3 = "aadbbbaccc"
, return false.
思路:
本题也是一个多层问题返回单值,故引入动态规划,由于是针对两个字符串,故引入二维数组dp[i][j],二维数组dp[i][j]=1表示s3匹配s1或者s2,dp[i][j]=0表示不匹配。
示例:s1="aa",s2="ab",s3="aaba"。标1的为可行。最终返回右下角。
0 a b
0 1 1 0
a 1 1 1
a 1 0 1
注意递归数组是从(0,0)开始,s1与s2真正对应二维数组下标关系:二维数组的第j列==s2[j-1],二维数组的第i行==s1[i-1],若dp[i][j]=1,则s1[i-1]或者s2[j-1]满足s3[i+j-1]。故当s1到达第i个元素,s2到达第j个元素,若dp[i][j]=1:
有可能是原始位置向右所得,此时s2[j-1]匹配s3[i+j-1]
有可能是原始位置向下所得,此时s1[i-1]匹配s3[i+j-1]
故递推关系如下:
dp[0][0]=1,初始位置,
dp[i][j]=dp[i][j-1]&(s2[j-1]==s3[i+j-1]) when i==0
dp[i][j]=dp[i-1][j]&(s1[i-1]==s3[i+j-1]) when j==0
dp[i][j]=dp[i][j-1]&(s2[j-1]==s3[i+j-1])||dp[i-1][j]&(s1[i-1]==s3[i+j-1]),others
代码:
bool isInterleave(string s1,string s2,string s3){int m=s1.size();int n=s2.size();if(m+n!=s3.size())return 0;vector< vector<bool> > dp(m+1,vector<bool>(n+1,0));for(int i=0;i<=m;i++) for(int j=0;j<=n;j++) { if(i==0&&j==0)dp[i][j]=1;//初始位置 else if(i==0)dp[i][j]=dp[i][j-1]&(s2[j-1]==s3[i+j-1]); else if(j==0)dp[i][j]=dp[i-1][j]&(s1[i-1]==s3[i+j-1]); elsedp[i][j]=dp[i][j-1]&(s2[j-1]==s3[i+j-1])||dp[i-1][j]&(s1[i-1]==s3[i+j-1]);; }return dp[m][n];}
0 0
- LeetCode 97. Interleaving String
- [LeetCode]97.Interleaving String
- [Leetcode] 97. Interleaving String
- LeetCode --- 97. Interleaving String
- [leetcode] 97.Interleaving String
- [leetcode] 97.Interleaving String
- leetcode 97. Interleaving String
- Leetcode - 97.Interleaving String
- leetcode 97. Interleaving String
- LeetCode 97. Interleaving String
- LeetCode 97. Interleaving String
- Leetcode:97. Interleaving String
- Leetcode 97. Interleaving String
- [leetcode] 97. Interleaving String
- LeetCode-97.Interleaving String
- [LeetCode] 97. Interleaving String
- leetcode 97.Interleaving String
- 97. Interleaving String ,leetcode
- 66-套接字超时(alarm)
- 机器学习-网络结构1
- java maven项目创建步骤
- (笔记本,双显卡)ubuntu14.04安装cuda8.0的经验
- 正则表达式 regular expression(二)
- Leetcode 97. Interleaving String
- 获取Android Activity两种方法
- 内联函数inline
- java.lang.NoClassDefFoundError: android.support.v7.internal.widget.TintManager 解决办法
- LB之Ningx2
- Java菜鸟面试突破系列之Java基础方面(四)
- Service
- Ubuntu 最新的pip包安装 及 pip 超时解决方案
- iPhone6无法开机、不能开机的解决方法