news 2026/9/3 2:31:14

Leetcode:97.交错字符串

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Leetcode:97.交错字符串

给定三个字符串s1s2s3,请你帮忙验证s3是否是由s1s2交错组成的。

两个字符串st交错的定义与过程如下,其中每个字符串都会被分割成若干非空子字符串:

  • 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意味着字符串ab连接。

示例 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)额外的内存空间来解决它?

还是直接上代码,特别简单的动态规划:

class Solution { /**近乎白送分的题,一看就是动态规划,但是可能稍微复杂一点点的:三维的吗? 三维也不是不能解,就是做起来比较麻烦,我们用二维来替代:既然s3的某个长度可以用s1的某个 长度和s2的某个长度拼出,那这段里s3的长度肯定等于s1和s2之和 */ public boolean isInterleave(String s1, String s2, String s3) { /**先转成字符数组方便操作 */ char[] sArr1 = s1.toCharArray(); char[] sArr2 = s2.toCharArray(); char[] sArr3 = s3.toCharArray(); int m = sArr1.length; int n = sArr2.length; int o = sArr3.length; if(m == 0 && n == 0 && o == 0) { return true; } if(m + n != o) { return false; } /**dp[i][j]表示s1的前i个字符和s2的前j个字符是否可以拼出s3的前i+j个字符*/ boolean[][] dp = new boolean[m+1][n+1]; /**s1的前0个字符和s2的前0个字符肯定能拼出s3的前0个字符*/ dp[0][0] = true; /**初始化第一行和第一列,第一列是s1的前i个字符和s3的前i个字符是否相等*/ for(int i = 1; i <= m ;i++) { dp[i][0] = dp[i - 1][0] && sArr1[i - 1] == sArr3[i-1]; } /**第一列是s2的前j个字符和s3的前j个字符是否相等 */ for(int j = 1; j <= n; j++) { dp[0][j] = dp[0][j - 1] && sArr2[j - 1] == sArr3[j - 1]; } /**考虑一般的位置*/ for(int i = 1; i <= m; i++) { for(int j = 1; j <= n; j++) { dp[i][j] = (dp[i-1][j] && sArr1[i - 1] == sArr3[i + j - 1]) || (dp[i][j - 1] && sArr2[j - 1] == sArr3[i + j - 1]); } } /**要求的是s1的整个和s2的整个能否拼出s3的整个 */ return dp[m][n]; } }

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 0:27:43

SSM计算机毕设之基于Java+SSM的种子商店网站的设计与开发基于ssm的种子商店网站的设计与开发(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 21:03:59

如何大批量上传❓超实用功能必看❗

&#x1f64b;我有几千张图片要上传到相册里&#xff0c;我总不能在手机上逐个选取上传吧&#xff0c;能否支持批量上传❓ &#x1f449;支持的 ⬇️下面将介绍如何进行大批量上传&#xff1a; 1️⃣打开土著相册小&#x1f34a;序&#xff0c;点击目标相册&#xff0c;进入相册…

作者头像 李华
网站建设 2026/9/2 23:32:08

计算机SSM毕设实战-基于ssm的种子商店网站的设计与开发种植知识科普种子商品管理【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 22:46:42

网络安全到底是啥?一篇看懂入门全攻略

什么是网络安全&#xff1f;一篇看懂入门全貌 网络安全&#xff08;Cyber Security&#xff09;是指通过技术、流程和策略&#xff0c;保护计算机系统、网络、程序、数据免受攻击、破坏、未经授权访问或泄露的行为。随着黑客手段不断升级&#xff0c;网络安全已成为个人和企业…

作者头像 李华
网站建设 2026/9/2 21:58:03

Stimulsoft Reports.AVALONIA 2026.1

Avalonia UI 平台的报告工具 Stimulsoft Reports.AVALONIA 是一款专为使用 Avalonia 技术在 .NET 6、.NET 7、.NET 8、.NET 9 和 .NET 10 平台上开发的应用程序而设计的报表产品。其报表组件完全支持现代 Avalonia UI 框架的所有功能&#xff0c;并可在 Windows、macOS 和 Linu…

作者头像 李华