LeetCode - Interleaving String

来源:互联网 发布:unity3d 中国象棋 编辑:程序博客网 时间:2024/05/01 19:04

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.

class Solution {public:    bool isInterleave(string s1, string s2, string s3) {int len1=s1.size(),len2=s2.size(),len3=s3.size();if(len1+len2!=len3){return false;}vector<vector<bool> > matrix(len1+1,vector<bool>(len2+1,false));matrix[len1][len2]=true;for(int i=len1-1;i>=0;i--){matrix[i][len2]=s1[i]==s3[i+len2]&&matrix[i+1][len2];}for(int i=len2-1;i>=0;i--){matrix[len1][i]=s2[i]==s3[i+len1]&&matrix[len1][i+1];}        for(int i=len1-1;i>=0;i--){for(int j=len2-1;j>=0;j--){matrix[i][j]=(matrix[i+1][j]&&s1[i]==s3[i+j])||(matrix[i][j+1]&&s2[j]==s3[i+j]);}}return matrix[0][0];    }};

原创粉丝点击