当前位置:网站首页>算法--交错字符串(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 的情况下应该怎么做
边栏推荐
猜你喜欢
从文本匹配到语义相关——新闻相似度计算的一般思路
(十六)51单片机——红外遥控
安装anaconda并创建虚拟环境
Golang死信队列的使用
Network protocol-TCP, UDP difference and TCP three-way handshake, four wave
百利药业IPO过会:扣非后年亏1.5亿 奥博资本是股东
Introduction to Cosine Distance
Line the last time the JVM FullGC make didn't sleep all night, collapse
List类的超详细解析!(超2w+字)
盘点在线帮助中心对企业能够起到的作用
随机推荐
(十六)51单片机——红外遥控
【leetcode】剑指 Offer II 008. 和大于等于 target 的最短子数组(滑动窗口,双指针)
【飞控开发高级教程3】疯壳·开源编队无人机-定高、定点、悬停
node版本切换工具NVM以及npm源管理器nrm
LeetCode 952. Calculate Maximum Component Size by Common Factor
Shell programming loop statement
glide set gif start stop
In-depth understanding of JVM-memory structure
高并发,你真的理解透彻了吗?
调用EasyCVR云台控制接口时,因网络延迟导致云台操作异常该如何解决?
刷题错题录1-隐式转换与精度丢失
高效目标检测:动态候选较大程度提升检测精度(附论文下载)
「学习笔记」高斯消元
Kettle 读取 Excel 数据输出到 Oracle 详解
WPF .cs中使用资源文件中的ControlTemplate或Style并找到控件
若依集成easyexcel实现excel表格增强
消除对特权账户的依赖使用Kaniko构建镜像
FreeRTOS中级篇
危化企业双重预防机制数字化建设进入全面实施阶段
嵌入式分享合集27