首页 > 代码库 > Interleaving String
Interleaving String
Given s1, s2, s3, find whether s3 is formed by the interleaving ofs1 and s2.
For example,
Given:
s1 = "aabcc"
,
s2 = "dbbca"
,
When s3 = "aadbbcbcac"
, return true.
When s3 = "aadbbbaccc"
, return false.
答案
public class Solution { boolean check[][]; String s1; String s2; String s3; public boolean isInterleave(int m,int n) { if(check[m][n]) { return false; } check[m][n]=true; if(m==s1.length()) { for(;n<s2.length();n++) { if(s2.charAt(n)!=s3.charAt(m+n)) { break; } } return n==s2.length(); } if(n==s2.length()) { for(;m<s1.length();m++) { if(s1.charAt(m)!=s3.charAt(m+n)) { break; } } return m==s1.length(); } if(s1.charAt(m)==s3.charAt(m+n)) { if(isInterleave(m+1,n)) { return true; } } if(s2.charAt(n)==s3.charAt(m+n)) { if(isInterleave(m,n+1)) { return true; } } return false; } public boolean isInterleave(String s1, String s2, String s3) { if(s1==null||s2==null||s3==null||s1.length()+s2.length()!=s3.length()) { return false; } int m=s1.length()+1; int n=s2.length()+1; check=new boolean[m][n]; this.s1=s1; this.s2=s2; this.s3=s3; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { check[i][j]=false; } } return isInterleave(0,0); } }
Interleaving String
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。