博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Q97 交错字符串
阅读量:5816 次
发布时间:2019-06-18

本文共 1817 字,大约阅读时间需要 6 分钟。

给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1s2 交错组成的。

示例 1:

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

示例 2:

输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false
class Solution {    public boolean isInterleave(String s1, String s2, String s3) {        if (s1 == null || s2 == null || s3 == null || s3.length() != (s1.length() + s2.length()))            return false;        else if (s1.equals("") && s2.equals(s3) || s2.equals("") && s1.equals(s3))            return true;        int[][] dp = new int[s1.length() + 1][s2.length() + 1];        char[] chs1 = s1.toCharArray();        char[] chs2 = s2.toCharArray();        char[] chs3 = s3.toCharArray();        for (int i = 1; i <= chs1.length; i++) {            if (chs1[i - 1] == chs3[i - 1])                dp[i][0] = dp[i - 1][0] + 1;            else {                int t = dp[i - 1][0];                while(i < chs1.length) {                    dp[i - 1][0] = t;                    i++;                }            }        }        for (int i = 1; i <= chs2.length; i++) {            if (chs2[i - 1] == chs3[i - 1])                dp[0][i] = dp[0][i - 1] + 1;            else {                int t = dp[0][i - 1];                while(i < chs2.length) {                    dp[0][i - 1] = t;                    i++;                }            }        }        for (int i = 1; i <= chs1.length; i++) {            for (int j = 1; j <= chs2.length; j++) {                int ti = dp[i - 1][j];                int tj = dp[i][j - 1];                int t1 = ti + (chs1[i - 1] == chs3[ti] ? 1 : 0);                int t2 = tj + (chs2[j - 1] == chs3[tj] ? 1 : 0);                dp[i][j] = t1 > t2 ? t1 : t2;            }        }        return dp[chs1.length][chs2.length] == chs3.length;    }}

转载于:https://www.cnblogs.com/WeichengDDD/p/10801861.html

你可能感兴趣的文章
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Kali linux virtualbox rc=1908 错误解决办法
查看>>
linux软件包管理之三(源代码安装)
查看>>
数据库三范式是什么?
查看>>
[转载]设置Ubuntu自动连接无线,无须再输入密钥环和无线密码
查看>>
九叔Xen App测试报告
查看>>
Apache配置
查看>>
Ext gridPanel 单元格数据的渲染
查看>>
Android SDK 的下载代理
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
LNMP一键安装
查看>>
Linux 目录结构及内容详解
查看>>
startx命令--Linux命令应用大词典729个命令解读
查看>>
华为3026c交换机配置tftp备份命令
查看>>
Oracle命令导入dmp文件
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
Http、TCP/IP协议与Socket之间的区别(转载)
查看>>