当前位置: 首页 > news >正文

【Leetcode-面试经典150题-day22】

目录

97. 交错字符串


 

97. 交错字符串

题意:

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

【输入样例】s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"

【输出样例】true

解题思路:

1. 如果s1的长度+s2的长度不等于s3的长度,直接返回false,否则

2. 定义动态数组dp[i][j]表示s1的前i个元素和s2的第j个元素能够否交错组成s3的前i+j个元素;

3. dp[i][j]能否为true,取决于dp[i-1][j]是否为true&&s1[i]==s3[i+j],同理dp[i][j]也取决于dp[i][j-1]&&s2[j]==s3[i+j];

4. dp的边界条件应该是dp[0][0]=true,即s1和s2的前0个元素可以构成s3的前0个元素(都为空)。

class Solution {public boolean isInterleave(String s1, String s2, String s3) {//先判断长度int len1 = s1.length();int len2 = s2.length();int len3 = s3.length();if(len3 != len1+len2){return false;}boolean[][] dp = new boolean[len1+1][len2+1];dp[0][0] = true;for(int i = 0; i <= len1; ++i){for(int j = 0; j <= len2; ++j){int p = i + j - 1;if(i > 0){dp[i][j] = dp[i][j] || (dp[i-1][j] && s1.charAt(i-1) == s3.charAt(p));}if(j > 0){dp[i][j] = dp[i][j] || (dp[i][j-1] && s2.charAt(j-1) == s3.charAt(p));}}}return dp[len1][len2];}
}

时间: 击败了66.74%

内存: 击败了25.11% 

http://www.lryc.cn/news/156147.html

相关文章:

  • LDAP服务器如何重启
  • AP51656 LED车灯电源驱动IC 兼容替代PT4115 PT4205 PWM和线性调光
  • 浅析安防视频监控平台EasyCVR视频融合平台接入大量设备后是如何维持负载均衡的
  • SIEM 中不同类型日志监控及分析
  • 【java基础复习】java中的数组在内存中是如何存储的?
  • MySQL数据库 MHA高可用
  • leetcode669. 修剪二叉搜索树(java)
  • 计算机网络的故事——确认访问用户身份的认证
  • C#禁用或启用任务管理器
  • 【Redis】NoSQL之Redis的配置及优化
  • 【数据库】如何利用Python中的petl将PostgreSQL中所有表的外键删除,迁移数据,再重建外键
  • Si24R2F+畜牧 耳标测体温开发资料
  • 阿里云服务器退款流程_退订入口_到账时间说明
  • 自然语言处理实战项目17-基于多种NLP模型的诈骗电话识别方法研究与应用实战
  • 安全错误攻击
  • ELK安装、部署、调试 (八)logstash配置语法详解
  • SPI协议
  • 机器学习算法系列————决策树(二)
  • ACM中的数论
  • 我的创作纪念日 —— 一年之期
  • qt.qpa.plugin:找不到Qt平台插件“wayland“|| (下载插件)Ubuntu上解决方案
  • 详解Spring Boot中@PostConstruct的使用
  • 判断子序列
  • Python Opencv实践 - 轮廓特征(最小外接圆,椭圆拟合)
  • Ubuntu22.04 LTS+NVIDIA 4090+Cuda12.1+cudnn8.8.1
  • 重装系统后,MySQL install错误,找不到dll文件,或者应用程序错误
  • 线程同步机制类封装及线程池实现
  • Linux中的用户、组和权限
  • python学习--基本数据类型之字典
  • 【OpenCV入门】第九部分——模板匹配