Interleaving String

来源:互联网 发布:淘大象软件下载 编辑:程序博客网 时间:2024/06/06 18:15
public class Solution {
    public boolean isInterleave(String s1, String s2, String s3) {

        if(s1==null||s1.length()==0)                        //判断s1是否为null    因为如果s1==null,又调用了s1.length() 会抛出  java.lang.NullPointerException异常

         return s2.equals(s3);
        if(s2==null||s2.length()==0)                        //s2同理
         return s1.equals(s3);
        if(s1.length()+s2.length()!=s3.length())
         return false;
        boolean [][] dp=new boolean[s1.length()+1][s2.length()+1];              //使用动态规划
        dp[0][0]=true;
        for(int i=0;i<s1.length();i++){
            dp[i+1][0]=dp[i][0]&&s1.charAt(i)==s3.charAt(i);
            for(int j=0;j<s2.length();j++){
                dp[0][j+1]=dp[0][j]&&s2.charAt(j)==s3.charAt(j);
                dp[i+1][j+1]=(dp[i+1][j]==true&&s2.charAt(j)==s3.charAt(i+j+1))||(dp[i][j+1]==true&&s1.charAt(i)==s3.charAt(i+j+1));
            }
        }
        return dp[s1.length()][s2.length()];
    }
}
0 0
原创粉丝点击