码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]Interleaving String

时间:2015-12-02 06:36:46      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

动规

public class Solution {
    public boolean isInterleave(String s1, String s2, String s3) {
        int length1 = s1.length();
        int length2 = s2.length();
        if (s3.length() != length1 + length2){
            return false;
        }
        int[][] record = new int[length1 + 1][length2 + 1];
        for (int r = 0; r <= length1; r++) {
            for (int c = 0; c <= length2; c++) {
                if (r == 0 && c == 0) {
                    record[r][c] = 1;
                    continue;
                }
                if (c != 0 && record[r][c - 1] != 0) {
                    record[r][c] = s3.charAt(record[r][c - 1] - 1) == s2.charAt(c - 1) ? record[r][c - 1] + 1 : 0;
                }
                if (r != 0 && record[r - 1][c] != 0) {
                    int tmp = s3.charAt(record[r - 1][c] - 1) == s1.charAt(r - 1) ? record[r - 1][c] + 1 : 0;
                    record[r][c] = Math.max(tmp, record[r][c]);
                }
            }
        }
        return record[length1][length2] - 1 == s3.length();
    }
}

 

[LeetCode]Interleaving String

标签:

原文地址:http://www.cnblogs.com/vision-love-programming/p/5011842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!