leetcode+判断字符串是否可以拆分成两个单词,DP

点击打开链接
//dp[i]表示子串S[i...len-1]是否可以根据字典进行拆分。
//dp[len]表示空串,dp[0]即s[0..len-1]为我们要求的答案。
class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        int len = s.size();
        if(len==0) return false;
        unordered_set<string>Dict(wordDict.begin(),wordDict.end()); //c++ 11出现的
        vector<bool>dp(len+1,false);
        dp[len]=true;
        for(int i=len-1;i>=0;i--){
            for(int j=i;j<len;j++){
                string substr = s.substr(i,j-i+1);//截取了从i开始的i-j的子串
                if(Dict.find(substr)!=Dict.end() && dp[j+1]==true){//第一个有单词,第二个也是有单词true了
                    dp[i] = true;
                    break;
                }
            }
        }
        return dp[0];
    }
};
int main()
{
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值