zoukankan      html  css  js  c++  java
  • [LeetCode] Interleaving String(dp)

    Given s1, s2, s3, 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.

    分析:非常好的DP的训练题,用dp矩阵存储的元素(i,j)表示s1中前i个元素,s2中前j个元素与s3中前i+j个元素相匹配

    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<bool> temp(len2+1,false);
            vector<vector<bool> > dp(len1+1,temp);//(i,j)表示s1中前i个元素,s2中前j个元素与s3中前i+j个元素相匹配
    
            for(int i=0;i<=len1;i++){
                for(int j=0;j<=len2;j++){
                    if(i==0 && j==0){
                       dp[i][j]=true;
                       continue;
                    }
                    if(i>0 && s1[i-1]==s3[i+j-1] && dp[i-1][j]==true)
                        dp[i][j]=true;
                    if(j>0 && s2[j-1]==s3[i+j-1] && dp[i][j-1]==true)
                        dp[i][j]=true;
                
                
                }//end for
            
            }//end for
    
           return dp[len1][len2];
        
        }
    };
  • 相关阅读:
    数据结构之c++感悟
    常见linux系统中RPM包的通用命名规则
    scripts
    http
    iscsi
    RHCE认证经典考题
    数据库
    配置空客户端邮件
    配置nfs服务
    Python版本的7大排序
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3895724.html
Copyright © 2011-2022 走看看