当前位置: 首页 > 后端技术 > Java

LeetCode-097-InterleavedString

时间:2023-04-01 15:33:17 Java

InterleavedString题目描述:给定三个字符串s1,s2,s3,请帮忙验证s3是否由s1和s2交错组成。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode网络所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:如果递归字符串长度为0,直接返回true;当s1的长度和s2的长度之和不等于s3的长度时,直接返回false;当s1的长度为0时,s1已经遍历完毕,直接判断s2和s3是否相等;当s2的长度为0时,即遍历完s2,直接判断s1和s3是否相等;后面根据s1和s2的首字符是否等于s3的首字符,递归调用该方法进行判断。包com.kaesar.leetcode.LeetCode_051_100;publicclassLeetCode_097{/***递归**@params1*@params2*@params3*@return*/publicstaticbooleanisInterleave(Strings1,Strings2,Strings3){//当字符串长度为0时,直接返回trueif(s1.length()==0&&s2.length()==0&&s3.length()==0){returntrue;}//当s1的长度和s2的长度之和不等于s3的长度时,直接返回falseif(s1.length()+s2.length()!=s3.length()){返回假;}//当s1的长度为0,即s1已经遍历完,直接判断s2和s3是否相等if(s1.length()==0){returns2.equals(s3);}//当s2的长度为0时,即s2已经遍历完,直接判断s1和s3是否相等if(s2.length()==0){returns1.equals(s3);}if(s1.charAt(0)==s3.charAt(0)&&s2.charAt(0)==s3.charAt(0)){//递归处理s1的下一个字符和s2的下一个字符ands3&&递归处理s1和s2的下一个字符s3的下一个字符returnisInterleave(s1.substring(1),s2,s3.substring(1))||isInterleave(s1,s2.substring(1),s3.substring(1));}elseif(s1.charAt(0)==s3.charAt(0)){//递归处理s1的下一个字符和s2、s3的下一个字符returnisInterleave(s1.substring(1),s2,s3.substring(1));}elseif(s2.charAt(0)==s3.charAt(0)){//递归处理s1和s2的下一个字符和s3的下一个字符returnisInterleave(s1,s2.substring(1),s3.substring(1));}else{//当s1和s2的下一个字符不等于s3的下一个字符时,直接返回falsereturnfalse;}}publicstaticvoidmain(String[]args){System.out.println(isInterleave("aabcc","dbbca","aadbbcbcac"));}}【每日留言】遇到逆境,应该心怀感恩。