补题 力扣双周赛105 LeetCode6394 字符串中的额外字符
补题 力扣双周赛105 [LeetCode6394] 字符串中的额外字符
给你一个下标从 0 开始的字符串 s
和一个单词字典 dictionary
。你需要将 s
分割成若干个 互不重叠 的子字符串,每个子字符串都在 dictionary
中出现过。s
中可能会有一些 额外的字符 不在任何子字符串中。
请你采取最优策略分割 s
,使剩下的字符 最少 。
示例 1:
1 | 输入:s = "leetscode", dictionary = ["leet","code","leetcode"] |
示例 2:
1 | 输入:s = "sayhelloworld", dictionary = ["hello","world"] |
题解
题目解析
又又又是一道dp题…可是我又又又没看出来…
这个题目的状态转移方程并不是十分好想,但是仔细想一下貌似也能理解:
1 | 这里的dp[i]都要注意,因为这个是代表的前i-1个的最少字符数. |
从他们写的代码中学到许多STL中的新函数和新用法,这些东西会放到Remark部分中.
AC代码
1 |
|
Remark
unordered_set
新数据类型,无序集合.据说是找东西比较快,是Hash表搞的.string.substr(s.begin(),length)
截取[s.begin(),s.begin()+length)
范围的字串并作为返回值.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Xunyoyo!