Leetcode 97. Interleaving String

来源:互联网 发布:mac怎么显示桌面图标 编辑:程序博客网 时间:2024/06/15 23:43

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.

1、建立一个2*2的 boolean 数组

2、行:s1    列:s2   

 

TT TTT      *            


public class Solution {    public boolean isInterleave(String s1, String s2, String s3) {        if (s1 == null || s1.length() == 0) return s2.equals(s3);        if (s2 == null || s2.length() == 0) return s1.equals(s3);                if (s1.length() + s2.length() != s3.length()) return false;                boolean[][] matrix = new boolean[s1.length() + 1][s2.length() + 1];                char[] char1 = s1.toCharArray();        char[] char2 = s2.toCharArray();        char[] char3 = s3.toCharArray();                for (int i = 0; i <= char1.length; i++) {            for (int j = 0; j <= char2.length; j++) {                if (i == 0 && j == 0) matrix[i][j] = true;                else if (i == 0) matrix[i][j] = matrix[i][j-1] && char2[j-1] == char3[i+j-1];                else if (j == 0) matrix[i][j] = matrix[i-1][j] && char1[i-1] == char3[i+j-1];                else matrix[i][j] = matrix[i][j-1] && char2[j-1] == char3[i+j-1] || matrix[i-1][j] && char1[i-1] == char3[i+j-1];            }        }        return matrix[char1.length][char2.length];    }}


0 0
原创粉丝点击