LeetCode-097-交错字符串
交错字符串
题目描述:给定三个字符串
s1、s2、s3,请你帮忙验证s3是否是由s1和s2交错 组成的。示例说明请见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-交错字符串的更多相关文章
- Java实现 LeetCode 97 交错字符串
97. 交错字符串 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的. 示例 1: 输入: s1 = "aabcc", s2 = " ...
- [每日一题2020.06.09] leetcode #97 交错字符串 dp
题目链接 利用动态规划的思想, 对于每种状态(i, j)来说都有(i-1, j) 和 (i,j-1) 需要注意的问题 : 初始化的问题,先把i=0和j=0的状态都初始化后才可以进行dp否则发生数组越界 ...
- C#LeetCode刷题-字符串
字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.6% 中等 5 最长回文子串 22.4% 中等 6 Z字形变换 35.8% 中等 8 字符串转整数 (atoi) ...
- C#版(击败100.00%的提交) - Leetcode 151. 翻转字符串里的单词 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- C#版(击败97.76%的提交) - Leetcode 557. 反转字符串中的单词 III - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. Leetcod ...
- LeetCode:反转字符串中的元音字母【345】
LeetCode:反转字符串中的元音字母[345] 题目描述 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "h ...
- LeetCode初级算法--字符串01:反转字符串
LeetCode初级算法--字符串01:反转字符串 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...
- 前端与算法 leetcode 344. 反转字符串
目录 # 前端与算法 leetcode 344. 反转字符串 题目描述 概要 提示 解析 解法一:双指针 解法二:递归 算法 传入测试用例的运行结果 执行结果 GitHub仓库 # 前端与算法 lee ...
- LeetCode初级算法--字符串02:字符串中的第一个唯一字符
LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...
- leetcode python反转字符串中的单词
# Leetcode 557 反转字符串中的单词III### 题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. **示例1:** 输入: "L ...
随机推荐
- 分子动力学模拟之基于自动微分的LINCS约束
技术背景 在分子动力学模拟的过程中,考虑到运动过程实际上是遵守牛顿第二定律的.而牛顿第二定律告诉我们,粒子的动力学过程仅跟受到的力场有关系,但是在模拟的过程中,有一些参量我们是不希望他们被更新或者改变 ...
- Java线程--Callable使用
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11871727.html Java线程--Callable使用 Callable和Runnabl ...
- 程序员的情人节「GitHub 热点速览 v.22.07」
又是一年情人日,刚好还是发文的今天.也没什么好送的,送点程序员的浪漫--代码和开源项目吧.记得在本周特推查收这份来自程序员的独有浪漫. 本周 GitHub 霸榜的项目基本上都是老项目,从老项目中挖点新 ...
- 为hade增加model自动生成功能
大家好,我是轩脉刃. 我们写业务的时候和db接触是少不了的,那么要生成model也是少不了的,如何自动生成model,想着要给hade框架增加个这样的命令. 看了下网上的几个开源项目,最终聚焦在两个项 ...
- Solution -「JOISC 2021」古老的机器
\(\mathcal{Description}\) Link. 这是一道通信题. 对于长度为一个 \(n\),仅包含字符 X, Y, Z 的字符串 \(s\),将其中 \(n\) 个字符按 ...
- 我们一起来学Shell - shell的函数
文章目录 定义函数 执行不带参数的函数 执行带参数的函数 函数的执行总结 我们一起来学Shell - 初识shell 我们一起来学Shell - shell的变量 我们一起来学Shell - shel ...
- verification 验证环境配置传递
验证环境配置传递 tc配置env 继承关系: tc_base->tc_base_bt->tc_xx base_env->xx_env base_env_cfg->xx_env_ ...
- 痞子衡嵌入式:揭秘i.MXRT1170上串行NOR Flash双程序可交替启动设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1060/1010上串行NOR F ...
- Zookeeper基础入门
Zookeeper简介 基本概念 Zookeeper是一个开源的分布式协调服务.其设计目标是将那些复杂的容易出错的分布式一致性服务封装起来,以简单的接口提供给用户使用.它是一个典型的分布式数据一致性的 ...
- [题解]UVA10129 Play on Words
链接:http://vjudge.net/problem/viewProblem.action?id=19492 描述:单词接龙 思路:求欧拉回路或欧拉道路. 首先建图,以字母为节点,单词为边.因为单 ...