OJ练习第122题——交错字符串

news/2025/2/12 7:50:52/

交错字符串

力扣链接:97. 交错字符串

题目描述

给定三个字符串 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 连接。

示例

在这里插入图片描述

思路

1、不能用双指针法。本题我一看到也是先想到双指针法,但是做不出来。官解只给出了一个反例:
在这里插入图片描述
该例子得到的结果是 False,实际应该是 True。
应该是当s3中的字符既能和s1匹配的上,又能和s2匹配的上,此时与s1匹配还是与s2匹配的问题。

Java代码

class Solution {public boolean isInterleave(String s1, String s2, String s3) {int l = s3.length(), m = s1.length(), n = s2.length();if(l != m + n) return false;boolean dp[][] = new boolean[m + 1][n + 1];dp[0][0] = true;for(int i = 1; i <= m; i++) dp[i][0] = s1.charAt(i - 1) == s3.charAt(i - 1) && dp[i - 1][0];for(int j = 1; j <= n; j++)dp[0][j] = s2.charAt(j - 1) == s3.charAt(j - 1) && dp[0][j - 1];for(int i = 1; i <= m; i++) {for(int j = 1; j <= n; j++) {dp[i][j] = (s1.charAt(i - 1) == s3.charAt(i + j - 1) && dp[i - 1][j]) || (s2.charAt(j - 1) == s3.charAt(i + j - 1) && dp[i][j - 1]);}}return dp[m][n];}
}

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/interleaving-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


http://www.ppmy.cn/news/106093.html

相关文章

后端返回文件流,前端在线预览excel

<a-modal v-model:visible"excelVisible" title"测试用例" width"90%" :footer"null"><!-- 方式二 --><div class"table-html-wrap" v-dompurify-html"excelData"></div><!-- <div…

从零开始的力扣刷题记录-第四十二天

力扣每日四题 1790. 仅执行一次字符串交换能否使两个字符串相等-简单1800. 最大升序子数组和-简单1748. 唯一元素的和-简单1110. 删点成林-中等总结 1790. 仅执行一次字符串交换能否使两个字符串相等-简单 题目描述&#xff1a; 给你长度相等的两个字符串 s1 和 s2 。一次 字符…

【分享】如何国内免费使用ChatGPT4教程

一、ChatGPT-3使用 1、ChatGPT用法总结&#xff1a; 自动化文本生成&#xff1a;可以用GPT生成文章、新闻、文本摘要&#xff0c;甚至小说、诗歌等文学作品。语音生成&#xff1a;结合语音合成技术&#xff0c;GPT可以生成自然流畅的语音&#xff0c;可以用于语音助手、交互式…

【AUTOSAR】Com通讯栈配置说明(二)---- CanIf模块

CanIf模块 CanIfCtrlDrvCfgs CanIfCtrlDrvBusOffNotification:busoff 发生后的callback函数 CanIfCtrlDrvWakeupNotification: wakeup 发生后的callback函数 CanIfCtrlId: 逻辑Canif id CanIfWakeupSupport:是否支持唤醒 CanIfMaxDlc:最大报文长度 CanIfCtrlCanCtrlRef: 关联…

JVM学习笔记(上)

1、总体路线 2、程序计数器 Program Counter Register 程序计数器&#xff08;寄存器&#xff09; 作用&#xff1a;是记录下一条 jvm 指令的执行地址行号。 特点&#xff1a; 是线程私有的不会存在内存溢出 解释器会解释指令为机器码交给 cpu 执行&#xff0c;程序计数器会…

在Windows11上模拟运行Linux命令的几种方式

在 Windows 上运行 Linux 命令的软件有很多&#xff0c;以下是其中几个比较常用的&#xff1a; Cygwin Cygwin 是一个为 Windows 提供类 Unix 环境的开源软件&#xff0c;它包含了大量的 Unix 工具和命令&#xff0c;可以在 Windows 上运行 Linux 命令。 安装命令 winget i…

深入探究HDFS:高可靠、高可扩展、高吞吐量的分布式文件系统【上进小菜猪大数据系列】

上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货。 引言 在当今数据时代&#xff0c;数据的存储和处理已经成为了各行各业的一个关键问题。尤其是在大数据领域&#xff0c;海量数据的存储和处理已经成为了一个不可避免的问题。为了应…

生产环境之负债均衡LVS+keepalived方案(4)_方案部署

DR模式 网络拓扑 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bq1OQe3z-1685415968316)(image/2023-05-17-12-01-02.png)] PS: 由于markdown对图片支持的缺陷&#xff0c;如想查看对应的图片可至博客: https://blog.csdn.net/zhjuan 查看下载对应…