交错字符串

题目描述:给定三个字符串 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. 分子动力学模拟之基于自动微分的LINCS约束

    技术背景 在分子动力学模拟的过程中,考虑到运动过程实际上是遵守牛顿第二定律的.而牛顿第二定律告诉我们,粒子的动力学过程仅跟受到的力场有关系,但是在模拟的过程中,有一些参量我们是不希望他们被更新或者改变 ...

  2. Java线程--Callable使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11871727.html Java线程--Callable使用 Callable和Runnabl ...

  3. 程序员的情人节「GitHub 热点速览 v.22.07」

    又是一年情人日,刚好还是发文的今天.也没什么好送的,送点程序员的浪漫--代码和开源项目吧.记得在本周特推查收这份来自程序员的独有浪漫. 本周 GitHub 霸榜的项目基本上都是老项目,从老项目中挖点新 ...

  4. 为hade增加model自动生成功能

    大家好,我是轩脉刃. 我们写业务的时候和db接触是少不了的,那么要生成model也是少不了的,如何自动生成model,想着要给hade框架增加个这样的命令. 看了下网上的几个开源项目,最终聚焦在两个项 ...

  5. Solution -「JOISC 2021」古老的机器

    \(\mathcal{Description}\)   Link.   这是一道通信题.   对于长度为一个 \(n\),仅包含字符 X, Y, Z 的字符串 \(s\),将其中 \(n\) 个字符按 ...

  6. 我们一起来学Shell - shell的函数

    文章目录 定义函数 执行不带参数的函数 执行带参数的函数 函数的执行总结 我们一起来学Shell - 初识shell 我们一起来学Shell - shell的变量 我们一起来学Shell - shel ...

  7. verification 验证环境配置传递

    验证环境配置传递 tc配置env 继承关系: tc_base->tc_base_bt->tc_xx base_env->xx_env base_env_cfg->xx_env_ ...

  8. 痞子衡嵌入式:揭秘i.MXRT1170上串行NOR Flash双程序可交替启动设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1060/1010上串行NOR F ...

  9. Zookeeper基础入门

    Zookeeper简介 基本概念 Zookeeper是一个开源的分布式协调服务.其设计目标是将那些复杂的容易出错的分布式一致性服务封装起来,以简单的接口提供给用户使用.它是一个典型的分布式数据一致性的 ...

  10. [题解]UVA10129 Play on Words

    链接:http://vjudge.net/problem/viewProblem.action?id=19492 描述:单词接龙 思路:求欧拉回路或欧拉道路. 首先建图,以字母为节点,单词为边.因为单 ...