当前位置: 首页 > news >正文

Leetcode 交错字符串

在这里插入图片描述

java solution

class Solution {
    public boolean isInterleave(String s1, String s2, String s3) {
        //首先获取这三个字符串的长度
        int m = s1.length();
        int n = s2.length();
        int l = s3.length();

        if(m + n != l) return false;

        //创建dp数组,dp[i][j]其含义是s3的前i+j个字符是否可以由s1中的前i个字符和s2中的前j个字符交错组成
        boolean[][] dp = new boolean[m + 1][n + 1]; //下标最大是m,n, 可以取到dp[m][n]
        dp[0][0] = true;
        
        //更新第一行和第一列
        for(int i = 1; i <= m; i++) { //注意,i,j的循环判断都是小于等于
            dp[i][0] = dp[i - 1][0] && s1.charAt(i - 1) == s3.charAt(i - 1);
        }

        for(int j = 1; j <= n; j++) {
            dp[0][j] = dp[0][j - 1] && s2.charAt(j - 1) == s3.charAt(j - 1);
        }

        for(int i = 1; i <= m; i++) {
            for(int j = 1; j <= n; j++) {
                char c1 = s1.charAt(i - 1);
                char c2 = s2.charAt(j - 1);
                char c3 = s3.charAt(i + j - 1);
                dp[i][j] = (dp[i - 1][j] && c1 == c3) || (dp[i][j - 1] && c2 == c3);
            }
        }
        return dp[m][n];
    }
}

相关文章:

  • [FPGA基础学习]加法器、三八译码器及DE2-115基本使用方法和数码管显示
  • (C语言)动态分配的动态通讯录(静态通讯录Plus)(C语言小项目)
  • 关于跨域问题(本地前端访问服务器端接口跨域出错)
  • Notepad++ 替换 换行符 为 逗号
  • 关于服务器只能访问localhost:8111地址,局域网不能访问的问题
  • AWE直击:萤石RX30 Max的吸泡面战争,一场清洁技术的范式革命
  • 分布式服务的熔断和降级
  • Unity Shader 学习17:合批渲染
  • Spring Boot 连接 MySQL 配置参数详解
  • 维创智脑(WIC)项目观察:技术集成的理想模型与现实难题
  • Containerd+Kubernetes搭建k8s集群
  • Mysql表中的字符编码到底怎么设置
  • ref和reactive区别
  • JS输出九九乘法表
  • Flink watermark的时间字段有空值,建表的时候,如何处理
  • C# 责任链模式全面讲解:设计思想与实际应用
  • LInux基础--ssh服务+日志管理
  • 家庭网络结构之局域网通信
  • 嘉立创庐山派,正点原子DNK230,k230烧录指南:为啥烧录固件会出现usb识别不了,无法使用,固件烧录后庐山派会亮蓝紫灯卡死
  • 操作系统之输入输出
  • 上市公司重大资产重组新规九要点:引入私募“反向挂钩”,压缩审核流程
  • 全国林业院校校长论坛举行,聚焦林业教育的创新与突破
  • 技术派|威胁F-35、击落“死神”,胡塞武装防空战力如何?
  • 时隔3年,持续近2小时,俄乌在土耳其谈成了什么?
  • 美F-35险被胡塞武装击中,损失增大让行动成“烂尾仗”
  • 奥运“四朝元老”华天回国参赛,伤势未愈谨慎出战全国锦标赛