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 ...
随机推荐
- .NET 7 预览版来啦,我升级体验了
听说.NET 7 来了,站长怎能不尝鲜呢,在除夕当天将体验情况简单汇报下,然后迎新春喽: 本文目录 .NET 7 详情(Proposed .NET 7 Breaking Changes #7131) ...
- servlet单例模式以及servlet的请求流程
目录 一.servlet 单例模式: 二.servlet的请求流程: ★ 流程: ★ 详细过程如下: 一.servlet 单例模式: tomcat服务器,通过Java的反射机制来自动调用servl ...
- Luogu P1314 [NOIP2011 提高组] 聪明的质监员
P1314 [NOIP2011 提高组] 聪明的质监员 题意 题目描述 给定\(n\)个物品,给定每个物品的 重量 \(w_i\) 和 价值 \(v_i\) 给定一个标准值 \(s\) 以及一个参数 ...
- 前后端数据json交换的问题
问题1:前端发送给后端数据了,后端也接收到了,后端同时返回数据给前端了,但是前端的ajax请求中的success(data){}中的方法不执行 解决:排查了很多问题,结果都一一排除了,最后发现后端发送 ...
- docker基础——4.网络待补
docker network ls bridge:NAT桥 host:共用宿主机namespace的UTS.IPC.Network none:只有lo,没有网卡 其他待补
- maven下使用jstl标签(1.2)版本
使用的是1.2版本的,只需要一个jstl-1.2.jar jsp中头部加入<%@ taglib prefix="c" uri="http://java.sun ...
- AppiumForMac安装2
安装了两天的Python和Appium,各种不成功,到现在还不知道要怎么才能使用,两者之间的关联性还是没找到. 虽然很乱,还是把这期间用到的知识汇总下: 1.爬墙很重要,下载东西慢的很. 2.最新的M ...
- iOS数据持久化方式及class_copyIvarList与class_copyPropertyList的区别
iOS数据持久化方式:plist文件(属性列表)preference(偏好设置)NSKeyedArchiver(归档)SQLite3CoreData沙盒:iOS程序默认情况下只能访问自己的程序目录,这 ...
- PHP获取用户IP地址
PHP获取访问者IP地址 这是一段 PHP 代码,演示了如何获得来访者的IP address. <?php//打印出IP地址:echo (GetIP());function GetIP() / ...
- VSCode官方的配置同步方案
前言 这几天在迁移电脑工作环境,对于VSCode,我实在不想从头做下载插件.配置代码规则这样的事情,于是求助百度,搜索结果靠前的解决方案基本都是使用Setings Sync插件,于是我就从了. 经过好 ...