<span>[每日一题2020.06.25]leetcode #139 dp</span>

dp的方式, dp[i]表示该位置之前的词是否可拆分, 每个位置都需要从头遍历到当前位置, 并判断dp[j] && substr(i,j-i)保证substr在字典. 时间复杂度\(O(n^2)\) 开始直接hashmap映射一下方便后面判断

unordered_map<string,bool> mp;

bool wordBreak(string s, vector<string>& wordDict) {
	for (auto i : wordDict) 
		mp[i] = true;
	int n = s.size();
	vector<bool> dp(n+1);
	dp[0] = 1;
	for (int i = 1; i <= n; ++i)
		for (int j = 0; j < i; ++j) {
			dp[i] = dp[j] && mp[s.substr(j, i-j)];
			if (dp[i]) break;
		}
	return dp[n];
}
全部评论

相关推荐

饼子吃到撑:当我看到外企的时候,我就知道这大概率可能是真的
点赞 评论 收藏
分享
01-16 18:34
四川大学 Java
欢迎加入AI:没有啥稳定不稳定,一切都源于业务快速发展还是收缩。我当年一开始去的央企,业务不赚钱,也贼卷,慢慢就开始优化了。。。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务