ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

97. 交错字符串

2022-05-28 09:32:30  阅读:174  来源: 互联网

标签:false string s3 s2 s1 交错 字符串 97


97. 交错字符串

给定三个字符串 s1s2s3,请你帮忙验证 s3 是否是由 s1s2 交错 组成的。

两个字符串 st 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:

  • s = s1 + s2 + ... + sn
  • t = t1 + t2 + ... + tm
  • |n - m| <= 1
  • 交错s1 + t1 + s2 + t2 + s3 + t3 + ... 或者 t1 + s1 + t2 + s2 + t3 + s3 + ...

注意:a + b 意味着字符串 ab 连接。

示例 1:

img

输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
输出:true

示例 2:

输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
输出:false

示例 3:

输入:s1 = "", s2 = "", s3 = ""
输出:true

提示:

  • 0 <= s1.length, s2.length <= 100
  • 0 <= s3.length <= 200
  • s1s2、和 s3 都由小写英文字母组成

思路:

​ 我的思路是带备忘录的动态规划,与官方题解并不相同,但是官方题解的双指针动态规划更加巧妙。

class Solution {
public:
    vector<vector<int>>memo;
    bool isInterleave(string s1, string s2, string s3) {
        int m=s1.size();
        int n=s2.size();
        memo.resize(m+1,vector<int>(n+1,-1));//备忘录 -1 表示未计算 0表示false 1表示true
        if((m+n)!=s3.size())return false;
        return dp(s1,0,s2,0,s3);
    }
    bool dp(string s1,int i,string s2,int j,string s3){
        if(i+j==s3.size())return true;
        int k=i+j;
        if(memo[i][j]!=-1){
            return memo[i][j]==1?true:false;
        }
        bool res=false;
        //下面两种情况只要有一个满足即可
        if(i<s1.size()&&s1[i]==s3[k]){//如果s1[i]可以和s3[k]匹配
            res = res|dp(s1,i+1,s2,j,s3);//或运算 有一个为真即可
        }
        if(j<s2.size()&&s2[j]==s3[k]){//如果s2[j]可以和s3[k]匹配
            res= res|dp(s1,i,s2,j+1,s3);
        }
        memo[i][j]=res==true?1:0;//res为真就存1 否则就存0
        return res;
    }
};

标签:false,string,s3,s2,s1,交错,字符串,97
来源: https://www.cnblogs.com/BailanZ/p/16319847.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有