LeetCode --Word Break
来源:互联网 发布:王熙凤贾宝玉 知乎 编辑:程序博客网 时间:2024/06/18 17:24
题目描述:
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
For example, given
s = "leetcode",
dict = ["leet", "code"].
Return true because "leetcode" can be segmented as "leet code".
就是给定一个字符串s,和一个字典dict,判断s是否满足:如果将s分为若干字串,s1,s2...sn.每个字串在dict中都存在。
例如s="leetcode" ,dict=["leet","code"],s就满足这一点,因为对于字串s1="leet",s2="code"而言,都在dict中可以找到。
思路:
一开始认为本题是典型的回溯+DFS,就是从s的每个字符开始查找,判断s[i...k]是否在dict中可以找到,如果可以,那么继续判断s[k...n]中的某个字串在dict中存在。可是这种算法会超时,无法通过测试数据。
查了一些解法,发现本题其实可以使用DP来做。
1.设dp[i]表示,在s中i的索引处可以在dict中找到。于是就可以遍历s,i∈[0,n)
2.当在i这个位置时,就需要对s[0...i]一一判断:是否存在某个位置满足,dp[0,k]=true并且s[k+1,i]在dict中可以找到(其中,k∈[0,i-1])。如果满足,那么就可以认为dp[i]=true。
实现代码:
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
For example, given
s = "leetcode",
dict = ["leet", "code"].
Return true because "leetcode" can be segmented as "leet code".
就是给定一个字符串s,和一个字典dict,判断s是否满足:如果将s分为若干字串,s1,s2...sn.每个字串在dict中都存在。
例如s="leetcode" ,dict=["leet","code"],s就满足这一点,因为对于字串s1="leet",s2="code"而言,都在dict中可以找到。
思路:
一开始认为本题是典型的回溯+DFS,就是从s的每个字符开始查找,判断s[i...k]是否在dict中可以找到,如果可以,那么继续判断s[k...n]中的某个字串在dict中存在。可是这种算法会超时,无法通过测试数据。
查了一些解法,发现本题其实可以使用DP来做。
1.设dp[i]表示,在s中i的索引处可以在dict中找到。于是就可以遍历s,i∈[0,n)
2.当在i这个位置时,就需要对s[0...i]一一判断:是否存在某个位置满足,dp[0,k]=true并且s[k+1,i]在dict中可以找到(其中,k∈[0,i-1])。如果满足,那么就可以认为dp[i]=true。
实现代码:
public class Solution { public bool WordBreak(string s, ISet<string> wordDict) { var dict = new Dictionary<string, bool>(); foreach(var w in wordDict){ dict.Add(w, true); } var found = new bool[s.Length + 1]; found[0] = true; for(var i = 0;i < s.Length; i++){ for(var j=i; j>=0; j--) { var str = s.Substring(j,i-j+1); if(dict.ContainsKey(str) && found[j]){ found[i+1] = true; break; } } } return found[s.Length]; }}
1 0
- leetcode Word Break & Word Break ||
- Leetcode: Word Break
- [leetcode]Word Break
- [leetcode]Word Break II
- LeetCode:Word Break
- LeetCode:Word Break II
- Leetcode: Word Break II
- [LeetCode] Word Break
- [LeetCode] Word Break II
- LeetCode: Word Break
- leetcode之Word Break
- [LeetCode]Word Break II
- [LeetCode]Word Break
- leetcode-Word Break
- LeetCode 之 Word Break
- leetcode word break
- LeetCode | Word Break
- LeetCode | Word Break II
- xcode 快捷键
- 使用ALAssetsLibrary读取所有照片
- Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别
- C++构造函数和析构函数中抛出异常的注意事项
- ShareSdk中分享失败时,根据不同的平台,提示不同的失败信息
- LeetCode --Word Break
- 利用socket进行TCP和UDP编程
- 零起步了解RK3288环境搭建以及版本编译
- Foundation常用类
- iOS 谓词 NSPredicate 详解
- 跨境电商到底算不算走私
- MongoDB与MySQL的插入、查询性能测试
- 补码与求补运算
- iOS DSYMs 的作用