交错字符串

题目描述:给定三个字符串 s1s2s3,请你帮忙验证 s3 是否是由 s1s2 交错 组成的。

示例说明请见LeetCode官网。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/interleaving-string/

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:递归
  • 如果字符串长度都为0时,直接返回true;
  • 当s1的长度和s2的长度之和不等于s3的长度时,直接返回false;
  • 当s1的长度为0即s1已经遍历完了,直接判断s2和s3是否相等;
  • 当s2的长度为0即s2已经遍历完了,直接判断s1和s3是否相等;
  • 后面根据s1和s2的第一个字符是否和s3的第一个字符是否相等,递归调用该方法进行判断。
package com.kaesar.leetcode.LeetCode_051_100;

public class LeetCode_097 {
/**
* 递归
*
* @param s1
* @param s2
* @param s3
* @return
*/
public static boolean isInterleave(String s1, String s2, String s3) {
// 当字符串长度都为0时,直接返回true
if (s1.length() == 0 && s2.length() == 0 && s3.length() == 0) {
return true;
}
// 当s1的长度和s2的长度之和不等于s3的长度时,直接返回false
if (s1.length() + s2.length() != s3.length()) {
return false;
}
// 当s1的长度为0即s1已经遍历完了,直接判断s2和s3是否相等
if (s1.length() == 0) {
return s2.equals(s3);
}
// 当s2的长度为0即s2已经遍历完了,直接判断s1和s3是否相等
if (s2.length() == 0) {
return s1.equals(s3);
}
if (s1.charAt(0) == s3.charAt(0) && s2.charAt(0) == s3.charAt(0)) {
// 递归处理s1的下一个字符和s2和s3的下一个字符 && 递归处理s1和s2的下一个字符和s3的下一个字符
return isInterleave(s1.substring(1), s2, s3.substring(1)) || isInterleave(s1, s2.substring(1), s3.substring(1));
} else if (s1.charAt(0) == s3.charAt(0)) {
// 递归处理s1的下一个字符和s2和s3的下一个字符
return isInterleave(s1.substring(1), s2, s3.substring(1));
} else if (s2.charAt(0) == s3.charAt(0)) {
// 递归处理s1和s2的下一个字符和s3的下一个字符
return isInterleave(s1, s2.substring(1), s3.substring(1));
} else {
// 当s1和s2的下一个字符和s3的下一个字符都不相等时,直接返回false
return false;
}
} public static void main(String[] args) {
System.out.println(isInterleave("aabcc", "dbbca", "aadbbcbcac"));
}
}

【每日寄语】 碰到逆境时,应心生感激,这是可遇不可求啊!

LeetCode-097-交错字符串的更多相关文章

  1. Java实现 LeetCode 97 交错字符串

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

  2. [每日一题2020.06.09] leetcode #97 交错字符串 dp

    题目链接 利用动态规划的思想, 对于每种状态(i, j)来说都有(i-1, j) 和 (i,j-1) 需要注意的问题 : 初始化的问题,先把i=0和j=0的状态都初始化后才可以进行dp否则发生数组越界 ...

  3. C#LeetCode刷题-字符串

    字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串   24.6% 中等 5 最长回文子串   22.4% 中等 6 Z字形变换   35.8% 中等 8 字符串转整数 (atoi)   ...

  4. C#版(击败100.00%的提交) - Leetcode 151. 翻转字符串里的单词 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...

  5. C#版(击败97.76%的提交) - Leetcode 557. 反转字符串中的单词 III - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. Leetcod ...

  6. LeetCode:反转字符串中的元音字母【345】

    LeetCode:反转字符串中的元音字母[345] 题目描述 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "h ...

  7. LeetCode初级算法--字符串01:反转字符串

    LeetCode初级算法--字符串01:反转字符串 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  8. 前端与算法 leetcode 344. 反转字符串

    目录 # 前端与算法 leetcode 344. 反转字符串 题目描述 概要 提示 解析 解法一:双指针 解法二:递归 算法 传入测试用例的运行结果 执行结果 GitHub仓库 # 前端与算法 lee ...

  9. LeetCode初级算法--字符串02:字符串中的第一个唯一字符

    LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...

  10. leetcode python反转字符串中的单词

    # Leetcode 557 反转字符串中的单词III### 题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. **示例1:** 输入: "L ...

随机推荐

  1. 用了这么久 Linux ,才知道这些概念。。。

    Linux 和 UNIX 中的文件系统是一个以 / 为根的树状式文件结构,/ 是 Linux 和 UNIX 中的根目录,同样它也是文件系统的起点.所有的文件和目录都位于 / 路径下,包括我们经常听到的 ...

  2. ansible学习(二)- 清单配置详解

    出处:http://www.zsythink.net/archives/2509 上一篇文章介绍了ansible的基本概念,以及相关的基础配置,我们已经知道,如果想要管理受管主机,则需要将受管主机添加 ...

  3. js 计算中英文混合字符串长度

    转载请注明来源:https://www.cnblogs.com/hookjc/ function isChinese(str) {    var lst = /[u00-uFF]/;          ...

  4. LCA与树上DP

    LCA 倍增 f[i][j]代表i的2^j级父亲 f[i][j]=f[f[i][j-1]][j-1] 有了f数组,如何计算"u向上跳k步到达哪个点"? 对k作二进制分解,枚举所有二 ...

  5. traceback.print_exc()的用法

    Python使用traceback.print_exc()来代替print e 来输出详细的异常信息   [python] view plain copy try: 1/0 except Except ...

  6. 申请免费的ssl通配符证书

    吐曹: 为了给我网站配置免费的htpps证书费死劲了, 折腾了一天, 找阿里阿里给我反馈的和我自己看的一样, 没什么用 我用Certbot生成证书以后怎么访问都是阿里的免费的hppts证书, 我都把阿 ...

  7. Maven依赖,去哪儿找

    1. 前言 maven是作为Javer日常开发中必不可少的工具,但是很多人对于它的使用也只是仅限于的几个功能. 前几天在使用一个依赖总是说找不到该依赖,但是在中央仓库中的确存在该构建.这个问题让我很困 ...

  8. Netty高级应用及聊天室实战

    Netty 高级应用 1. 编解码器 概念:在网络应用中,需要实现某种编解码器.将原始字节数据与自定义消息数据进行相互转换.网络中都是以字节码的形式传输的. 对Netty而言,编解码器由两部分组成:编 ...

  9. 关于maven依赖中的scope的作用和用法

    举例如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  10. 攻防世界Web_easytornado

    题目: 解题思路: 题目就三个txt文本文件 , 由python_template_injection这篇随笔中了解到tornado也是python web应用程序模板的一种,应该也是考查模板注入. ...