C语言 | Leetcode C语言题解之第139题单词拆分

题目:

题解:

cpp 复制代码
unsigned long long Hash(char* s, int l, int r) {
    unsigned long long value = 0;
    for (int i = l; i < r; i++) {
        value = value * 2333ull;
        value += s[i] - 'a' + 1;
    }
    return value;
}
bool query(unsigned long long* rec, int len_rec, unsigned long long x) {
    for (int i = 0; i < len_rec; i++) {
        if (rec[i] == x) return true;
    }
    return false;
}
bool wordBreak(char* s, char** wordDict, int wordDictSize) {
    unsigned long long rec[wordDictSize + 1];
    for (int i = 0; i < wordDictSize; i++) {
        rec[i] = Hash(wordDict[i], 0, strlen(wordDict[i]));
    }
    int len_s = strlen(s);
    bool dp[len_s + 1];
    memset(dp, 0, sizeof(dp));
    dp[0] = true;
    for (int i = 1; i <= len_s; i++) {
        for (int j = 0; j < i; j++) {
            if (dp[j] && query(rec, wordDictSize, Hash(s, j, i))) {
                dp[i] = true;
                break;
            }
        }
    }
    return dp[len_s];
}
相关推荐
时间的拾荒人14 小时前
C语言字符函数与字符串函数完全指南
c语言·开发语言
持力行15 小时前
C/C++ 中的 char*:它标识数组吗?为什么能用下标访问?
c语言·c++
小陈的代码之路18 小时前
回文链表(LeetCode 234)C语言最佳解题思路
c语言·leetcode·链表
aaaameliaaa19 小时前
计算斐波那契数(递归、迭代)(1,1,2,3,5.....)
c语言·开发语言·笔记·算法·排序算法
郭梧悠21 小时前
算法:有效的括号
python·算法·leetcode
旖-旎21 小时前
《LeetCode 1137 第N个泰波那契数 和 LeetCode 三步问题》
c++·算法·leetcode·动态规划
wabs66621 小时前
关于动态规划【力扣718.最长重复子数组的思考】
算法·leetcode·动态规划
zhangfeng113321 小时前
算子开发 Overwrite 覆盖/替换模式 Accumulate 累加模式,性能对比 memset错误 bat_alloc 错误
c语言·人工智能·gnu·算子开发
SuperByteMaster21 小时前
JLinkDevices.xml FLM文件路径不对
c语言
LDR0061 天前
LDR6500赋能POS机底座:单口Type-C供电、维护与产测一体化解决方案
大数据·c语言·人工智能