三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的

LeetCode 交错字符串(递归、动态规划) 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 示例 1: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 输出: true 示例 2: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc" 输出: false 思路分析:如果第三个字符是由第一个 阅读详情

三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的(如同归并排序两个有序数组合并为一个有序数组这样的交错)

package edu.ccnu;

import java.util.Scanner;

/**
 * 现有三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的
 * @author MLee
 *
 */
public class IsInterleave {
    public static boolean isInterleave(String s1, String s2, String s3){
        int len1 = s1.length();
        int len2 = s2.length();
        int len3 = s3.length();
        if((len1 + len2) != len3){ // 长度不一致,则显然不可能
            return false;
        }
        // dp[i][j]表示s3[1,len1+len2]是否由s1[1,len1]和s2[1,len2]交错组成
        boolean[][] dp = new boolean[len1+1][len2+1];
        dp[0][0] = true; // 空串与空串交错组成空串
        for(int i = 0; i < len1+1; i++){
            for(int j = 0; j < len2+1; j++){
                if((i-1) >= 0 && dp[i-1][j] && s1.charAt(i-1) == s3.charAt(i-1+j)){ // dp[i-1][j]=true表示s3[1, i-1+j]由s1[1,i-1]和s2[1,j]交错组成,如果s1.charAt(i-1)与s3.charAt(i-1+j)相等,那么很显然dp[i][j]也为true
                    dp[i][j] = true;
                }
                if((j-1) >= 0 && dp[i][j-1] && s2.charAt(j-1) == s3.charAt(i+j-1)){ // dp[i][j-1]=true表示s3[1, i+j-1]由s1[1,i]和s2[1,j-1]交错组成,如果s2.charAt(j-1)与s3.charAt(i+j-1)相等,那么很显然dp[i][j]也为true
                    dp[i][j] = true;
                } // 除以上两种情况外,dp[i][j]为false
            }
        }
        return dp[len1][len2];
    }

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("> ");
        String s1 = sc.next();
        System.out.print("> ");
        String s2 = sc.next();
        System.out.print("> ");
        String s3 = sc.next();
        System.out.println(isInterleave(s1, s2, s3));
        sc.close();
    }
}
字符串的交错组成 动态规划 1、问题描述 给定三个三个字符串str1,str2和aim,如果aim包含且仅包含来自str1和str2的所有字符,而且在aim中属于str1的字符之间还保持原来的顺序,属于str2中的字符也是如此,那么称aim是str1和str2的交错组成。判断aim是不是str1和str2的交错组成。 2、输入 第一行输入str1,第二行输入str2,第三行输入aim 3、输出 阅读详情

相关推荐

【leetcode热题100】交错字符串

给定三个字符串s1s2s3,请你帮忙验证s3是否是由s1和s2组成的。两个字符串s和t的定义与过程如下,其中每个字符串都会被分割成若干a + b意味着字符串a和b连接。

kiugvui的博客 1028

interleaving-string Java code

Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given: s1 =”aabcc”, s2 =”dbbca”, When s3 =”aadbbcbcac”, return true. When s3 =”aadbbbaccc”,

qq_29606255的博客 339

稳定性仿真(stb闭环增益仿真)

stb仿真主要是测试电路的稳定性,例如运放在闭环电路中的增益和相位裕度的值,从而判别电路是否正常工作。 以下是stb仿真的过程: (1)调用iprobe器件 从analogLib中调iprobe器件,通过器件中的箭头标识确定接入电路的方法,箭头起点端连运放的输出端,箭头的终点端连在反馈环路的作用端。iprobe器件连入电路后相当于理想导线。(iprobe器件连接在反馈回路上) (2)analyses设置 勾选stb和frequency,此处的频率范围设置在0.1~1GHz,Probe Instance/T

qq_36686804的博客 3万+

程序员代码面试指南刷题--第四章.字符串的交错组成

题目描述 给定三个字符串str1、str2 和aim,如果aim包含且仅包含来自str1和str2的所有字符,而且在aim中属于str1的字符之间保持原来在str1中的顺序属于str2的字符之间保持原来在str2中的顺序,那么称aim是str1和str2的交错组成。实现一个函数,判断aim是否是str1和str2交错组成,如果是请输出“YES”,否则输出“NO”。 输入描述: 输出三行,分别表示三...

我不是什么好人 280

强化学习 之 Actor Critic

简介 Actor Critic是一种结合体算法: (1)Actor 的前生是 Policy Gradients,这能让它毫不费力地在连续动作中选取合适的动作,而 Q-learning 做这件事会瘫痪; (2)Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法,能进行单步更新,而传统的 Policy Gradients 则是回合更新,这降低了学习效率。 算法思想 Actor...

Test_tju的博客 811

Anaconda详细安装及使用教程(带图文)

Anacond的介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda的下载文件比较大(约531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和Python)。 Conda是一个开源的包、环境管理器,可以用于...

代码帮 186万+

LeetCode-----第九十七题-----交错字符串

交错字符串 难度:困难 给定三个字符串s1,s2,s3, 验证s3是否是由s1和s2交错组成的。 示例 1: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 输出: true 示例2: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc" 输出: false 题目分析: 这个是两个字符串组合,相对于原来的顺序是不能乱序的。比如字符串“a”和“cd”,...

L_smartworld的博客 486

Vue3+Vite+Electron桌面应用开发:从零到打包的完整避坑指南

本文是一份详尽的Vue3+Vite+Electron桌面应用开发实战指南。文章从项目初始化、环境配置、主进程构建、Vite深度优化,到最终的打包配置与优化,系统性地讲解了使用现代前端技术栈开发跨平台桌面应用的完整流程,并重点分享了开发与打包过程中的常见“坑点”与解决方案,旨在帮助开发者高效构建稳定可交付的桌面端应用。

hh234的博客 107

leetcode【每日一题】97. 交错字符串 Java

题干 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 示例 1: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 输出: true 示例 2: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc" 输出: false 想法 如果s1+s2的长度不等于s3 那么肯定不行 设置dp[i][j]表示s1,s2的前i,j是否匹配s3的前i+j个 如果dp[i][j-1]都

qq_43491066的博客 252

Halcon手眼标定实战:九点标定法从入门到精通(附完整代码)

本文详细介绍了Halcon环境下九点标定法的完整实现流程,从基础概念到实战技巧,帮助开发者快速掌握手眼标定技术。通过精确采集图像坐标与机械坐标,计算仿射变换矩阵,实现相机与机械臂坐标系的精确映射,适用于工业自动化中的平面定位场景。

v4w5x6的博客 411

基于分位数回归的静态CoVaR计算 案例与代码

原文链接:https://bbs.pinggu.org/thread-7925441-1-1.html 一、静态CoVaR模型介绍 二、资料简介 实现对相关期刊论文进行论文重现,解决实证分析中的技术操作问题。里面包含了每一步详细的步骤,可以方便的利用这个手册解决大部分利用分位数回归计算静态CoVaR的论文的模型实现问题。即从数据下载到模型实现一整条操作步骤。 关键词:【分位数回归】【Co...

ChenQihome9的博客 7504

LeetCode每日一题之“交错字符串”

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

Michael_Zyx的博客 706

仿真学习系列(三十八):Sigrity仿真之单端S参数提取

S 参数(Scattering Parameters)是高速信号分析中最基础也最常用的指标,能够全面表征走线、过孔、连接器等互连结构的高频行为。在 Sigrity PowerSI 中,Model Extraction 是最常用的 S 参数提取方式,适用于高速差分线、单端线、过孔、参考平面等各种拓扑结构。 本节将通过示例讲解如何在 PowerSI 中完成一次完整的 S 参数提取流程,包括:对象选择、端口设置、频率范围配置以及结果查看。掌握此方法后,即可对任意高速网络执行阻抗、插损、回损、串扰分析,为进一步的

案例文章,高速信号 838

交错字符串(s3是否由s1和s2组成)

题目: 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 例: 输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 输出:true 例:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc" 输出:false 例:输入:s1 = "aa", s2 = "ac", s3 = "aaca" 输出:true 思考: 我只想简单的实现,取出当前s3的下标,和s1...

u011604049的博客 1367

YOLO11优化:原创自研 | 低对比度场景 | 平滑的 CIoU,对其惩罚项(中心点距离和长宽比差异)进行平滑

为了应对上述挑战,我们需要一个对边界框定位误差更具容忍度的 IoU 变体。我们的核心思想是:在 CIoU 的基础上,对其惩罚项(中心点距离和长宽比差异)进行平滑处理

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 535

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LeetCode97. 交错字符串,给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。

给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: 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 意味着字符串 a 和 b 连接。 示例

qq_43206800的博客 2179

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

leetcode97 交错字符串

给定三个字符串s1, s2, s3, 验证s3是否是由s1和s2 交错组成的。 示例 1: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 输出: true 示例2: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc" 输出: false 思路:之前做过,比较简单,dp[i][...

少说,多做。 3605

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java实现 LeetCode 97 交错字符串

97. 交错字符串 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 示例 1: 输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac” 输出: true 示例 2: 输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbbaccc” 输出: false class Solutio...

南 墙 1万+

2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12

2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc”,s2=“123”,s3=“12ab3c”,应该返回true,因为s3去掉123后,剩下的是abc。比如s1=“abc”,s2=“123”,s3=“12ba3c”,应该返回false,因为s3去掉123后,剩下的是bac,顺序不一致,不符合条件。 福大大 答案2021-06-19: 方法一:双指针。表面上可以用这种方法,实际上是不对的。如果回溯,那跟方法二就没区别了,这种方法直接舍弃。

福大大架构师每日一题 2万+

判断s3字符串是否由s1和s2交错组成

给定一个字符串,判断该字符串能否由另外两个字符串交错组成。 bool IsCross(char* a, char* b, char* aim) { int len1 = strlen(a); int len2 = strlen(b); int len3 = strlen(aim); if (len3 != (len1 + len2)) return false; bool **d

Poem~ 1307

动态规划-08interleaving-string给出三个字符串s1, s2, s3,判断s3是否可以由s1和s2交织而成java实现

题目描述 给定三个字符串s1,s2,s3, 验证s3是否是由s1和s2交错组成的。 示例 1: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 输出: true 示例2: 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc" 输出: false 思路:dp[i][...

WukongGo的博客 1610

LintCode 29 给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。

class Solution { public: /** * @param s1: A string * @param s2: A string * @param s3: A string * @return: Determine whether s3 is formed by interleaving of s1 and s2 */ ...

TERMINATOR-FOR-EVER 1219

【JAVA】交错字符串——力扣每日一题(六)(2020.07.18)

目录题目:97. 交错字符串思路 如果你从本文中学习到丝毫知识,那么请您点点关注、点赞、评论和收藏 大家好,我是爱做梦的鱼,我是东北大学大数据实验班大三的小菜鸡,非常渴望优秀,羡慕优秀的人,个人博客为:爱做梦的鱼https://zihao.blog.youkuaiyun.com/,微信公众号、微信视频号为【程序猿干货铺】,qq交流群为:1107710098, 如果你同样热爱算法,那么请关注我,我将每日更新力扣的每日一题的题解+代码,每周更新力扣周赛题解+代码 《本题Python代码版》 专栏《力扣每日一题》 专

子浩的博客 3357

动态规划之判断一个字符串是否是由另2个字符串交错组成的

现在有3个字符串s1,s2,s3,我们需要判断s3是否是由s1和s2交错组成的。对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。 dp表代表当s1在i处是交错的同时s2在j处是交错的s3在i+j处是否是交错的。 如果s1和s2在当前位置是空,s3也是空,则我们视为true;如果s1是空,s2之前的位置是交错的而且s2在当前位置和s3...

t_zht的博客 765

【LeetCode】97. 交错字符串

本文探讨了交错字符串问题,即判断字符串s3是否能由s1和s2交替组合而成。通过动态规划方法解决该问题,其中状态dp[i][j]表示s1前i个字符和s2前j个字符能否组成s3前i+j个字符。状态转移方程考虑字符匹配情况,并可通过滚动数组优化空间至O(n)。此外,还介绍了记忆化递归和BFS搜索两种替代解法。关键点包括:长度验证、保持字符相对顺序、以及多种路径选择的处理方式。时间复杂度为O(mn),其中m和n分别为s1和s2的长度。

qq_32019341的博客 1356

leetcode97. 交错字符串,二维动态规划

leetcode97. 交错字符串,二维动态规划

热爱C++和golang的学生 1434
上一篇: 包含n个整数的数组,返回该数组和为最大的子数组
下一篇: 隐含马尔科夫模型(HMM)原理及其实现
mlee1018
博客等级 码龄12年 36粉丝 57原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值