Leetcode面试经典150题-97.交错字符串

embedded/2024/9/25 14:51:15/

给定三个字符串 s1s2s3,请你帮忙验证 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 连接。

示例 1:

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

示例 2:

输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
输出:false

示例 3:

输入:s1 = "", s2 = "", s3 = ""
输出:true

提示:

  • 0 <= s1.length, s2.length <= 100
  • 0 <= s3.length <= 200
  • s1s2、和 s3 都由小写英文字母组成

进阶:您能否仅使用 O(s2.length) 额外的内存空间来解决它?

其他的就不多说了,上代码,看不懂的请留言或者私信,收到第一时间解答

java">class Solution {public boolean isInterleave(String s1, String s2, String s3) {if(s1.length() + s2.length() != s3.length()) {return false;}/**都转成字符数组方便操作 */char[] s1Arr = s1.toCharArray();char[] s2Arr = s2.toCharArray();char[] s3Arr = s3.toCharArray();/**定义动态规划数组,dp[i][j]表示s1的前i个字符和s2的前j个字符能不能交错组成s3的前i+j个字符*/boolean[][] dp = new boolean[s1Arr.length+1][s2Arr.length+1];dp[0][0] = true;/**初始化第一行和第一列 */for(int i = 1; i < dp.length; i++) {dp[i][0] = dp[i-1][0] && s1Arr[i-1] == s3Arr[i-1];}for(int j = 1; j < dp[0].length; j++) {dp[0][j] = dp[0][j-1] && s2Arr[j-1]==s3Arr[j-1];}/**初始化一般情况 */for(int i = 1; i < dp.length; i++) {for(int j = 1; j < dp[i].length; j++) {dp[i][j] = (dp[i][j - 1] && s2Arr[j-1] == s3Arr[i+j-1]) || (dp[i-1][j] && s1Arr[i-1]==s3Arr[i+j-1]);}}/**返回结果:s1的前s1.length()个字符和s2的前s2.length个字符能不能组成s3*/return dp[s1Arr.length][s2Arr.length];}
}


http://www.ppmy.cn/embedded/116669.html

相关文章

Vue:默认插槽

目录 一.性质 1.内容分发 2.无名称标识 3.作用域 4.使用方式 二.使用 1.父组件 2.子组件 三.代码 1.父组件代码 2.子组件代码 四.效果 一.性质 1.内容分发 默认插槽允许组件的使用者定义一些内容&#xff0c;这些内容会被插入到组件模板中的特定位置。这有助于实…

Linux环境变量进程地址空间

目录 一、初步认识环境变量 1.1常见的环境变量 1.2环境变量的基本概念 二、命令行参数 2.1通过命令行参数获取环境变量 2.2本地变量和内建命令 2.3环境变量的获取 三、进程地址空间 3.1进程&#xff08;虚拟&#xff09;地址空间的引入 3.2进程地址空间的布局和理解 …

复制他人 CSDN 文章到自己的博客

文章目录 0.前言步骤 0.前言 在复制别人文章发布时&#xff0c;记得表明转载哦 步骤 在需要复制的csdn 文章页面&#xff0c;打开浏览器开发者工具&#xff08;F12&#xff09;Ctrl F 查找"article_content"标签头 右键“Copy”->“Copy element”新建一个 tx…

Flyway 数据库差异处理

Flyway 数据库差异处理详解 在软件开发过程中&#xff0c;数据库 schema 的变更是不可避免的&#xff0c;尤其是在多人协作、多环境部署时&#xff0c;不同环境中的数据库结构可能出现差异。Flyway 作为一个数据库迁移工具&#xff0c;通过版本控制和自动化迁移&#xff0c;确…

【Transformers基础入门篇6】基础组件之Evaluate

文章目录 一、简介二、基本使用2.1 安装2.2 查看是否安装成功2.3 加载评估函数2.4 查看函数说明2.5 评估指标计算-全局计算2.6 评估指标计算-迭代计算add与add_batch 2.7 多个评估指标计算 combine 本文为 https://space.bilibili.com/21060026/channel/collectiondetail?sid1…

【机器学习】过拟合与欠拟合——如何优化模型性能

【机器学习】过拟合与欠拟合——如何优化模型性能 1. 引言 在机器学习中&#xff0c;模型的表现不仅依赖于算法的选择&#xff0c;还依赖于模型对数据的拟合情况。过拟合&#xff08;Overfitting&#xff09;和欠拟合&#xff08;Underfitting&#xff09;是模型训练过程中常…

怎样才能远程了解在iPhone、iPad上看了什么网站、用了什么APP?

有不少家长在网上吐槽&#xff1a; ——自家小孩每天抱着手机看&#xff0c;一看就两三个小时&#xff0c;到底在看什么&#xff1f; ——没有不允许小孩玩手机&#xff0c;但他一玩就一整天&#xff0c;用什么户外活动、家庭活动都吸引不回来。 ——每次问小孩在手机上看什…

c++判断一个字符串的内容是否是16进制字符串

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 要判断一个字符串是否为16进制字符串&#xff0c;可以遍历字符串中的每个字符&#xff0c;并检查它们是否都是合法的16进制字符&#xff08;即0-9和A-F或a-f&#xff09;。 代码示…