97. 交错字符串

描述

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

分析

不知道大家对不同路径的题还有没有印象,本题也可以利用其思想求解:
target 的每个字符都是从 s1(向下)或者 s2(向右)拿到的,所以只要判断是否存在这条 target 路径即可;
于是可定义 boolean[][] dp ,dp[i][j] 代表 s1 前 i 个字符与 s2 前 j 个字符拼接成 s3 的 i+j 字符,也就是存在目标路径能够到达 i ,j ;
作者:gousiqi
链接:https://leetcode-cn.com/problems/interleaving-string/solution/lei-si-lu-jing-wen-ti-zhao-zhun-zhuang-tai-fang-ch/

class Solution {public boolean isInterleave(String s1, String s2, String s3) {int n1 = s1.length(), n2 = s2.length();if (s3.length() != n1 + n2) return false;boolean[][] dp = new boolean[n1+1][n2+1];for (int i = 1; i <= n1 && s1.charAt(i-1) == s3.charAt(i-1); i++) dp[i][0] = true; for (int j = 1; j <= n2 && s2.charAt(j-1) == s3.charAt(j-1); j++) dp[0][j] = true;for(int i = 1; i <= n1; i++){for(int j = 1; j <= n2; j++){boolean a = dp[i-1][j] && (s1.charAt(i-1) == s3.charAt(i+j-1));boolean b = dp[i][j-1] && (s2.charAt(j-1) == s3.charAt(i+j-1));dp[i][j] = (a || b);}}return dp[n1][n2];}
}

0动态规划中等 LeetCode97. 交错字符串相关推荐

  1. leetcode97. 交错字符串(动态规划)

    给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的. 示例 1: 输入: s1 = "aabcc", s2 = "dbbca&quo ...

  2. leetcode97 交错字符串

    给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的. 示例 1: 输入: s1 = "aabcc", s2 = "dbbca&quo ...

  3. 0动态规划中等 NC206 跳跃游戏(二)

    NC206 跳跃游戏(二) 描述 给定一个非负整数数组nums,假定最开始处于下标为0的位置,数组里面的每个元素代表下一跳能够跳跃的最大长度,如果可以跳到数组最后一个位置,请你求出跳跃路径中所能获得的 ...

  4. LeetCode 97交错字符串(动态规划)

    微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 92反转链表Ⅱ&93复制ip地址&94 ...

  5. 97. 交错字符串 java解决

    题目描述: 难度:中等 相关标签:字符串.动态规划给定三个字符串s1.s2.s3,请你帮忙验证s3是否是由s1和s2 交错 组成的. 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会 ...

  6. 算法-js系列(2):动态规划-中等(1)

    刷动态规划的题,感觉简单.中等的区分度没有这么高,都是能想到状态表示和状态转移方程就做的出来,想不出来就做不出来,所以重点还是在多做多想 文章目录 5_最长回文子串 62_不同路径 63_不同路径II ...

  7. LeetCode 97: 交错字符串

    这里我们考虑用 s1和 s2的某个前缀是否能形成 s3 的一个前缀. 这个方法的前提建立于:判断一个 s3的前缀(用下标 k表示),能否用 s1和 s2 的前缀(下标分别为 i和 j),仅仅依赖于 s ...

  8. 8.动态规划(1)——字符串的编辑距离

    动态规划的算法题往往都是各大公司笔试题的常客.在不少算法类的微信公众号中,关于"动态规划"的文章屡见不鲜,都在试图用最浅显易懂的文字来描述讲解动态规划,甚至有的用漫画来解释,认真读 ...

  9. 【JAVA】交错字符串——力扣每日一题(六)(2020.07.18)

    目录 题目:97. 交错字符串 思路 如果你从本文中学习到丝毫知识,那么请您点点关注.点赞.评论和收藏 大家好,我是爱做梦的鱼,我是东北大学大数据实验班大三的小菜鸡,非常渴望优秀,羡慕优秀的人,个人博 ...

  10. asp.net2.0如何加密数据库联接字符串

    asp.net2.0如何加密数据库联接字符串 在asp.net2.0中,发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:/WINDOW ...

最新文章

  1. 科大星云诗社动态20211008
  2. [2020.11.26NOIP模拟赛]询问【字符串hash】
  3. 大数据_Flink_数据处理_运行时架构3_yarn上作业提交流程---Flink工作笔记0018
  4. c语言速算24源代码,C语言源程序代码-速算24
  5. java string 对象地址_Java中String对象的存储位置(学习笔记)
  6. 使用kon-boot绕过win10或其他版本密码
  7. 怎么用计算机编程算术,总算认识怎么用scratch做计算题答题程序
  8. 学术篇 | 不同需求的认知控制揭示了语义记忆和情景记忆提取共享的神经机制
  9. linux icmp 时间戳过滤,ICMP-linux c 时间戳请求功能实现
  10. 基于Matlab的压力控制论文,基于Matlab的压力容器螺栓组联接优化设计的论文
  11. 【原创】2009.6.22犀浦记
  12. *PAT_甲级_1072 Gas Station (30point(s)) (C++)【Dijkstra/字符串截取/与数字相互转换】
  13. 关于在u-boot中使用usb进行通信(三)
  14. 工程资料管理实行计算机管理的利弊,工程资料与档案的管理
  15. 一步步带你做vue后台管理框架(二)——上手使用 系列教程《一步步带你做vue后台管理框架》第二课
  16. Android资源编辑器,使用布局编辑器构建界面
  17. 生日蜡烛问题(蓝桥杯算法)
  18. 如何调整照片人物年龄,此生也算共白头,PaddleGAN开源项目安装使用 | 机器学习
  19. 全球100款大数据工具汇总,入行必备
  20. mysql 查找 法语字母_Mysql使用可选的法语字符搜索LIKE

热门文章

  1. Linux面试常考(面经总结)
  2. sony android 计算器,NeoCal 全能计算器 V2.0.2
  3. 虚幻引擎5 C++游戏开发教程
  4. VTK:图像平滑——中值滤波器
  5. linux 解压war到root_unzip命令解压war包方法
  6. C语言实现阿克曼函数
  7. PCB封装库命名规则
  8. 在vue2.0下安装axios
  9. PROTUES实例——stm32点灯
  10. 大学计算机基础流媒体,大学计算机基础经典课件.ppt