当前位置:网站首页>算法--交错字符串(Kotlin)
算法--交错字符串(Kotlin)
2022-08-03 20:01:00 【小米科技Android 研发曹新雨】
题目
给定三个字符串 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 连接。

输入:s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”
输出:true
输入:s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbbaccc”
输出:false
输入:s1 = “”, s2 = “”, s3 = “”
输出:true
解决思路

解决方法
fun isInterleave(s1: String, s2: String, s3: String): Boolean {
val m = s1.length
val n = s2.length
val l = s3.length
if (m + n != l) {
return false
}
val dp = Array(m + 1) {
Array(n + 1) {
false } }
dp[0][0] = true
for (i in 0..m) {
for (j in 0..n) {
if (i > 0){
dp[i][j] = dp[i - 1][j] && s1[i - 1] == s3[i + j - 1]
}
if (j > 0){
dp[i][j] = dp[i][j] || (dp[i][j - 1] && s2[j - 1] == s3[i + j - 1])
}
}
}
dp.forEach {
it.forEach {
print("$it ") }
println()
}
return dp[m][n]
}
总结
1.这道题做了两天 第一个想不出来思路 想不出来状态转换方程 看了思路
第二天还是没有写出来 调试了半天才写出来
2.一定要注意 为0 的情况下应该怎么做
边栏推荐
猜你喜欢

若依集成easyexcel实现excel表格增强

Anaconda virtual environment migration

【STM32】标准库-自定义BootLoader

Jingdong cloud released a new generation of distributed database StarDB 5.0

利用 rpush 和 blpop 实现 Redis 消息队列

后台图库上传功能

简易电子琴设计(c语言)

华为设备配置VRRP负载分担

MySQL master-slave, 6 minutes you master!

调用EasyCVR接口时视频流请求出现404,并报错SSL Error,是什么原因?
随机推荐
ECCV 2022 Oral | 满分论文!视频实例分割新SOTA: IDOL
若依集成browscap读取浏览器用户代理
Alexa染料标记RNA核糖核酸|RNA-Alexa 514|RNA-Alexa 488|RNA-Alexa 430
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
CSDN帐号管理规范
DeepMCP网络详解
1-php学习笔记之数据类型
LeetCode 622. 设计循环队列
C51 存储类型与存储模式
In-depth understanding of JVM-memory structure
宁德时代2号人物黄世霖辞任副董事长:身价1370亿
FreeRTOS Intermediate
CS kill-free pose
使用 ReportLab 绘制 PDF
Anaconda virtual environment migration
群辉查看硬盘存储占用的方式
LeetCode 899. 有序队列
tRNA-m5C转运RNA(tRNA)修饰5-甲基胞嘧啶(m5C)|tRNA修饰m1Am2A (2-methyladenosine)
dpkg强制安装软件
【木马免杀】