美文网首页
LeetCode-097-交错字符串

LeetCode-097-交错字符串

作者: 醉舞经阁半卷书 | 来源:发表于2021-11-10 13:12 被阅读0次

交错字符串

题目描述:给定三个字符串 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-交错字符串

    交错字符串 题目描述:给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的...

  • 97. 交错字符串

    97. 交错字符串 dp

  • Go&Java算法之交错字符串

    交错字符串 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字...

  • LeetCode 97. 交错字符串 | Python

    97. 交错字符串 题目来源:力扣(LeetCode)https://leetcode-cn.com/proble...

  • leetcode 97. 交错字符串

    题目链接 : https://leetcode-cn.com/problems/interleaving-stri...

  • 97.交错字符串(困难)

    原题 https://leetcode-cn.com/problems/interleaving-string/ ...

  • Python小白 Leetcode刷题历程 No.96-N

    Python小白 Leetcode刷题历程 No.96-No.100 不同的二叉搜索树、交错字符串、验...

  • 交错

    夜还未至,人造的星星 就亮了起来,泛波的云田 天还没春,刺眼的洁白 便散了开去,荏苒的暖阳 在交错的时间和季节 我...

  • 交错

    一天远处飞来几只老鼠到处啃东西,大家拿它们没有办法,它们速度快而且身份坚硬,屋内屋外只留下一道划过的身影。专门请...

  • 交错

    李纤云带徐渺上了山,徐渺被石头拌倒了,猛地压到了李纤云身上,顿时间,空气中仿佛充满暧昧的味道,那时纯洁的他们……李...

网友评论

      本文标题:LeetCode-097-交错字符串

      本文链接:https://www.haomeiwen.com/subject/kmgbzltx.html