[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。

相关推荐
I Promise342 小时前
C++ 单例模式超详细讲解
开发语言·c++·单例模式
wuweijianlove2 小时前
算法性能优化中的数据流重构与依赖消解的技术6
算法
Agent手记2 小时前
智能财务对账Agent如何设计?2026金融大模型Agent架构设计与实战指引
人工智能·算法·ai·金融
Emerson_20262 小时前
stack,queue,list的区别和联系
数据结构·c++·list·queue·stack
计算机安禾2 小时前
【算法分析与设计】第5篇:最大子数组问题:分治与线性扫描的对比分析
算法
王老师青少年编程2 小时前
2026年全国青少年信息素养大赛初赛真题(算法应用主题赛C++初中组初赛真题2:文末附答案和解析)
c++·真题·答案·初赛·2026年·初中组·青少年信息素养大
z200509302 小时前
今日算法(组合问题)(回溯解法)
算法·深度优先
Shiy_2 小时前
用 TypeScript 验证三门问题:为什么换门胜率是 2/3?
算法·typescript
Yunzenn2 小时前
深度解析字节最新研究-Cola DLM 第 06 章:分块因果 DiT 先验 —— 在隐空间里做 Flow Matching
人工智能·算法·架构
HjhIron2 小时前
数组去重:从零开始,写一个靠谱的工具函数
算法·面试