day-38 交错字符串


思路

动态规划,利用一个二维数组,dp[i][j]表示s3前i+j个字符能否用s1前i个字符和s2前j个字符交错形成

解题过程

转换方程:dp[i][j]=(dp[i-1][j]&&s3.charAt(i+j-1)==s1.charAt(i-1))||(dp[i][j-1]&&s3.charAt(i+j-1)==s2.charAt(j-1))

Code

java 复制代码
class Solution {
    public boolean isInterleave(String s1, String s2, String s3) {
        if(s1.length()+s2.length()!=s3.length())return false;
        int len1=s1.length();
        int len2=s2.length();
        int len3=s3.length();
        boolean ans[][]=new boolean[len1+1][len2+1];
        ans[0][0]=true;
        for(int i=0;i<=len1;i++){
            for(int j=0;j<=len2;j++){
                if(i>0)
                ans[i][j]=ans[i-1][j]&&s3.charAt(i+j-1)==s1.charAt(i-1);
                if(j>0)
                ans[i][j]=ans[i][j]||(ans[i][j-1]&&s3.charAt(i+j-1)==s2.charAt(j-1));
            }
        }
        return ans[len1][len2];
    }
}
相关推荐
CoovallyAIHub8 分钟前
AAAI 2026 | 华中科大联合清华等提出Anomagic:跨模态提示零样本异常生成+万级AnomVerse数据集(附代码)
深度学习·算法·计算机视觉
npupengsir21 分钟前
nano vllm代码详解
人工智能·算法·vllm
m0_5698814724 分钟前
C++中的组合模式高级应用
开发语言·c++·算法
m0_7301151129 分钟前
高性能计算负载均衡
开发语言·c++·算法
灰色小旋风36 分钟前
力扣19删除链表的倒数第N个结点(C++)
c++·算法·leetcode·链表
孞㐑¥37 分钟前
算法—记忆化搜索
开发语言·c++·经验分享·笔记·算法
二进制星轨38 分钟前
leecode-70-颜色分类-算法题解
数据结构·算法·排序算法
xushichao198938 分钟前
代码覆盖率工具实战
开发语言·c++·算法
2401_8579182940 分钟前
C++与WebAssembly集成
开发语言·c++·算法
2401_8796938740 分钟前
C++与微服务架构
开发语言·c++·算法