第48题 Interleaving String

来源:互联网 发布:算法爱好者 编辑:程序博客网 时间:2024/06/05 16:25

Given s1s2s3, find whether s3 is formed by the interleaving of s1 and s2.

For example,
Given:
s1 = "aabcc",
s2 = "dbbca",

When s3 = "aadbbcbcac", return true.
When s3 = "aadbbbaccc", return false.

Hide Tags
 Dynamic Programming String











Solution in Java:(Dynamic)
public class Solution {    public boolean isInterleave(String s1, String s2, String s3) {        if(s1=="")  return  s2.equals(s3);        if(s2=="") return s1.equals(s3);                int len1=s1.length(), len2 = s2.length(), len3 = s3.length();        if(len3!=len1+len2) return false;                boolean[][] opj = new boolean[len1+1][len2+1];        //opj[i][j] denotes if s1[0...i-1] and s2[0...j-1] can form s3[0...i+j-1].        //so opj[len1][len2] denotes  if s1[0...len1-1] and s2[0...len2-1] can from s3[0...len1+len2-1],        //which is the answer we need.                opj[0][0]=true;                for(int j=1; j<len2+1; j++) opj[0][j] = s2.charAt(j-1)==s3.charAt(j-1);                for(int i=1; i<len1+1; i++) opj[i][0] = s1.charAt(i-1)==s3.charAt(i-1);                for(int i=1; i<len1+1; i++){            for(int j=1; j<len2+1; j++){                opj[i][j] = opj[i-1][j]&&s1.charAt(i-1)==s3.charAt(i+j-1)|| //add char in s1                            opj[i][j-1]&&s2.charAt(j-1)==s3.charAt(i+j-1);  //add char in s2            }        }        return opj[len1][len2];    }}

Note: 只关心s3[0...i+j-1]是否能由s1[0...i-1]和s2[0...j-1]形成,不关心之前怎样形成的具体过程。
而在s3[0...i+j-2]合法的前提下,要s3[0...i+j-1]也合法,需要由s1或s2中添加一个合法字母。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2个月宝宝干呕怎么办 9个月宝宝拉稀的怎么办 宝宝拉肚子快一个月了怎么办 满月宝宝发烧38度怎么办 大人腹泻10天了怎么办 十个月宝贝拉水怎么办 十个月宝宝脱水哭闹怎么办 宝宝肠胃不好老是拉肚子怎么办 七个月的宝宝老是拉肚子怎么办 6个月宝宝拉肚子怎么办 没满月宝宝吐奶怎么办 八个月宝宝有点拉肚子怎么办 4个月宝宝拉水怎么办 2岁宝宝消化不好拉肚子怎么办 两岁宝宝老拉肚子怎么办 2岁宝宝拉肚子老不好怎么办 2岁宝宝一直拉肚子不好怎么办 5天新生儿拉稀水怎么办 4天新生儿拉稀水怎么办 新生儿40天拉稀水怎么办 一周多的宝宝拉肚子怎么办 出生半个月的宝宝拉肚子怎么办 刚出生几天的宝宝拉肚子怎么办 刚出生的宝宝拉肚子怎么办 出生八天的宝宝拉肚子怎么办 刚出生婴儿拉水怎么办 三岁宝宝一直吐怎么办 3岁宝宝一直吐怎么办 5个月宝宝一直吐怎么办 新生儿睡反了觉怎么办 吃母乳奶流量大怎么办 两个月宝宝有痰怎么办 婴儿瞌睡睡倒了怎么办 侧切伤口崩开了怎么办 脐带30天未脱落怎么办 洗眉结痂不掉怎么办 新生宝宝生殖器下面破皮怎么办 脐带未脱落渗血怎么办 车停店门口贴发单怎么办 有人要打我我该怎么办 很笨怎么办工作做不好