[LeetCode]139.单词拆分(C++)

1.代码

cpp 复制代码
class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        int length = s.size();
        bool *count1 = new bool[length+1];
        fill(count1, count1 + length + 1, false);
        unordered_map<string, bool> hashTable;
        count1[0] = true;
        for(int i = 0;i < wordDict.size();i ++){
            hashTable[wordDict[i]] = true;
        }
        for(int i = 1;i <= length;i ++){
            for(int j = 0;j < i;j ++){
                if(count1[j] && hashTable.count(s.substr(j,i-j))>0){
                    count1[i] = true;
                    break;
                }
            }
        }
        return count1[length];
    }
};

2.思路

用了动态规划,用一个count1数组记录字符串的前i个字母是否能拆分成单词,状态转移方程是count1[i] = count1[j] &&hashTable.count(s.substr(j,i-j))>0。

相关推荐
Navigator_Z5 分钟前
LeetCode //C - 757. Set Intersection Size At Least Two
c语言·算法·leetcode
Blue.ztl1 小时前
DP刷题练习(二)
算法·cpp
青山是哪个青山1 小时前
位运,模拟,分治,BFS,栈和哈希表
算法·散列表·宽度优先
Zephyrtoria3 小时前
区间合并:区间合并问题
java·开发语言·数据结构·算法
柏箱5 小时前
容器里有10升油,现在只有两个分别能装3升和7升油的瓶子,需要将10 升油等分成2 个5 升油。程序输出分油次数最少的详细操作过程。
算法·bfs
Aderversa6 小时前
C++开源协程库async_simple有栈协程源码分析
c++·协程
uyeonashi6 小时前
【QT】窗口详解
开发语言·c++·qt·学习
Hello eveybody7 小时前
C++介绍整数二分与实数二分
开发语言·数据结构·c++·算法
空白木各7 小时前
evo工具
c++
编码小笨猪7 小时前
浅谈Linux中一次系统调用的执行过程
linux·服务器·c++