ICode9

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

leetcode 97. 交错字符串

2022-03-18 18:58:04  阅读:206  来源: 互联网

标签:charAt s3 s2 s1 97 dp 字符串 leetcode 个字符


题目链接
这题目真的很容易想到双指针。。。。

思路:动态规划
分析:如果两边长度不一样,那么肯定不行。
dp[i][j]=true 表示s1的前i个字符和s2的前j个字符能拼出来s3的前i+j个字符。
那么dp[i][j]的状态 取决于
s1的前i-1个字符和s2的前j个字符的状态和s1的第i-1个字符与s3的第i+j-1个字符有关
s1的前i个字符和s2的前j-1个字符状态和s2的第i的个字符与s3的第i+j-1个字符有关

代码化:
dp[i][j] |= (dp[i-1][j] && s1.charAt(i-1)==s3.charAt(i3));
dp[i][j] |= (dp[i][j-1] && s2.charAt(j-1)==s3.charAt(i3));

代码:

class Solution {
    public boolean isInterleave(String s1, String s2, String s3) {
        //要是两边长度不一样,肯定拼不出来
        if(s1.length() + s2.length() != s3.length()){
            return false;
        }

        int len1 = s1.length(),len2 = s2.length(), len3 = s3.length();
        // 两边相等,都等于0,那肯定就能拼出来
        if(len3==0){
            return true;
        }
        //有一部分为空字符串的,那么只需要比对另一部分和目标是否一致
        if(len1==0){
            return s2.equals(s3);
        }else if(len2==0){
            return s1.equals(s3);
        }

        //dp[i][j]=true  表示s1前i个字符和s2前j个字符,能拼出来s3前i+j个字符 [0,i-1]   [0,j-1]
        boolean[][] dp = new boolean[len1+1][len2+1];

        dp[0][0] = true;
        for(int i = 0 ; i<= len1;i++){
            for(int j = 0 ; j <= len2;j++){
                //标志s3的下标
                int i3 = i+j-1;
                if(i>0){
                    dp[i][j] |= (dp[i-1][j] && s1.charAt(i-1)==s3.charAt(i3));
                }
                if(j>0){
                    dp[i][j] |= (dp[i][j-1] && s2.charAt(j-1)==s3.charAt(i3));
                }
            }
        }
        return dp[len1][len2];
    }
}

被隔离了,题也做不了了。。。。
希望所有人平安渡过。

标签:charAt,s3,s2,s1,97,dp,字符串,leetcode,个字符
来源: https://blog.csdn.net/weixin_42496727/article/details/123581652

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

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

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

ICode9版权所有