交叉字符串

来源:互联网 发布:股市和楼市的关系 知乎 编辑:程序博客网 时间:2024/05/28 17:06

给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。


您在真实的面试中是否遇到过这个题?
Yes
样例

比如 s1 = "aabcc" s2 = "dbbca"

    - 当 s3 = "aadbbcbcac",返回  true.

    - 当 s3 = "aadbbbaccc", 返回 false.


点题:还是边界条件

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




阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 五字春联大全 春联书法作品 九字春联大全带横批 2019猪年春联七言带横批 猴年春联大全 春联批发厂家直销 春联批发价格表 小型春联印刷机 春联利润大概是多少 书法家写春联 七言春联大全 曹全碑集字春联 行书春联书法 春联书法字帖 中国春联大全 五字对联 春连 鸡年对联大全 鸡年对联 2018经典七字春联 春舞钢琴谱 蝶舞大唐春 春舞枝鲜花 春舞枝 春节 2020春节 2019春节 春节手抄报 2019年春节 春节倒计时 春节作文 春节的来历 春节英语 春节来历 春节假期 春节几号 期待春节档 春节英文 春节古诗 春节诗句 春节传说