2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc”,s2=“123”,s3=“12ab3c”,应该返回true,因为s3去掉123后,剩下的是abc。比如s1=“abc”,s2=“123”,s3=“12ba3c”,应该返回false,因为s3去掉123后,剩下的是bac,顺序不一致,不符合条件。

福大大 答案2021-06-19:

方法一:双指针。表面上可以用这种方法,实际上是不对的。如果回溯,那跟方法二就没区别了,这种方法直接舍弃。

方法二:动态规划,样本对应模型。
dp[i][j]依赖左边和上边。
根据下面的动态规划表格可以看出规律:左对看上等,上对看左等。
状态转移方程我不懂,就不说了。
时间复杂度:O(MN)。
空间复杂度:O(MN)。可优化成O(M)。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
s1 := "aaabsk"
s2 := "aacfk"
s3 := "aaacaabfskk"
ret := isInterleave(s1, s2, s3)
fmt.Println(ret)
} func isInterleave(s1 string, s2 string, s3 string) bool {
if len(s3) != (len(s1) + len(s2)) {
return false
}
dp := make([][]bool, len(s1)+1)
for i := 0; i < len(s1)+1; i++ {
dp[i] = make([]bool, len(s2)+1)
}
dp[0][0] = true
for i := 1; i <= len(s1); i++ {
if s1[i-1] != s3[i-1] {
break
}
dp[i][0] = true
}
for j := 1; j <= len(s2); j++ {
if s2[j-1] != s3[j-1] {
break
}
dp[0][j] = true
}
for i := 1; i <= len(s1); i++ {
for j := 1; j <= len(s2); j++ {
if s1[i-1] == s3[i+j-1] && dp[i-1][j] || s2[j-1] == s3[i+j-1] && dp[i][j-1] {
dp[i][j] = true
}
}
}
return dp[len(s1)][len(s2)]
}

执行结果如下:

动态规划图解如下:


左神java代码

2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12的更多相关文章

  1. 字符串之————三向字符串快速排序(Quick3string)

    上一篇介绍了字符串的两种经典排序方法(LSD MSD): https://www.cnblogs.com/Unicron/p/11531111.html 下面我们来介绍一种通用的字符串排序方法——三向 ...

  2. [c/c++] programming之路(22)、字符串(三)——字符串封装

    项目结构 头文件.h #include<stdio.h> #include<stdlib.h> #include<string.h> //字符串封装,需要库函数 / ...

  3. 2021.06.19【NOIP提高B组】模拟 总结

    T1 题意:有 \(n\) 个点,有 \(m\) 条边,每次加入一条到图中 问每个点的度数大于零且都是偶数的子图的个数 考试直接判断两点是否出现,出现则更新 其实只要改成并查集判断即可 原理:其实就是 ...

  4. [Python学习] 模块三.基本字符串

            于Python最重要的数据类型包含字符串.名单.元组和字典.本文重点介绍Python基础知识. 一.字符串基础         字符串指一有序的字符序列集合,用单引號.双引號.三重(单 ...

  5. 19.python基础试题(三)

    转载: 老男孩 Python 基础知识练习(三):https://www.cnblogs.com/nulige/p/6128674.html 1.列举布尔值为 False 的值空,None,0, Fa ...

  6. python数据类型和字符串(三)

    一.变量 变量声明变量 #!/usr/bin/env python age= gender1='male' gender2='female' 变量作用:保存状态(程序的运行本质是一系列状态的变化,变量 ...

  7. ytu 1064: 输入三个字符串,按由小到大的顺序输出(水题,字符串处理)

    1064: 输入三个字符串,按由小到大的顺序输出 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 471  Solved: 188[Submit][Sta ...

  8. iOS开发Swift篇—(三)字符串和数据类型

    iOS开发Swift篇—(三)字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容  let website = "http://www ...

  9. 小猪猪逆袭成博士之C++基础篇(三)字符串

    小猪猪逆袭成博士之C++基础篇(三)字符串 String 写在题外的话: 非常感谢在我发了第一篇随笔以后有很多人看还评论了,这大概就是一种笔记性质的,也不一定全对,如果不对的地方请指出来让我加以改正. ...

  10. Java读书笔记三(字符串)

    1.介绍 本篇博客将对JAVA中的字符串类的基本知识进行介绍.主要字符串类的一些经常用法等内容. 2.字符串对象的创建 1.有两种形式.可是在开发中常常习惯于String 变量名的形式来进行操作. & ...

随机推荐

  1. Redis在线安装+三种启动方式(自启配置)

    ​ 1.下载 1)检查是否安装wget插件 $ wget --version ​ 2)如未安装,使用yum进行安装 $ yum install -y wget ​ 3)下载redis安装包 $ wge ...

  2. Jquery中,$(this)的少许获取问题

    这是原始代码,结果为解禁提示框中$(this)获取不到当前元素. 如上图,在提示方法外面声明一下$(this)并赋给$this,下面调用$this,即可获取当前元素.

  3. Spring源码分析之getBean

    一.前言 spring作为JAVAEE最核心的框架,是每一个java开发者所必须掌握的,非常重要,本篇从一个简单例子入手,由浅入深的分析spring创建bean的全过程,目标在于彻底搞懂spring原 ...

  4. PyQt-Fluent-Widgets:一个 Fluent Design 风格的组件库

    简介 这是一个使用 PyQt/PySide 编写的 Fluent Design 风格的组件库,包含最常用的组件,支持亮暗主题无缝切换.实际上此项目是从 Groove Music 项目剥离出来的子项目, ...

  5. os模块的使用方法详解

    os模块 os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口:即os模块提供了非常丰富的方法用来处理文件和目录. 使用的时候需要导入该模块:import os 常用方法如下: 方法名 作用 ...

  6. Centos 6 部署PPTP服务

    前言:PPTP使用一个TCP连接对隧道进行维护,使用通用路由封装(GRE)技术把数据封装成PPP数据桢通过隧道传送.可以对封装PPP桢中的负载数据进行加密或压缩. 注意:PPTP协议已经被IOS系统所 ...

  7. 机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类

    机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类 项目链接参考:https://www.heywhale.com/home/column/64141d6b1c8c8 ...

  8. jmeter关于常用取样器的设置

      常用创建操作   1.线程组:测试计划(右键)-->线程(用户)-->线程组   2.http请求:线程组(右键)-->取样器-->http请求   3.察看结果树:线程组 ...

  9. urllib.parse的使用

    urllib简介 urllib是pyhton自带的标准库用于网络请求库,无需安装,直接引用 通常用于爬虫开发,API(应用程序编程接口)数据获取和测试 urllib库的4大模块 urllib.requ ...

  10. 【LeetCode动态规划#02】图解不同路径I + II(首次涉及二维dp数组,)

    不同路径 力扣题目链接(opens new window) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 "Start" ). 机器人每次只能向下或者向右移 ...