139. Word Break
来源:互联网 发布:系统重装软件哪个好 编辑:程序博客网 时间:2024/05/17 05:59
问题描述
Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separated sequence of one or more dictionary words. You may assume the dictionary does not contain duplicate words.
For example, given
s = “leetcode”,
dict = [“leet”, “code”].
Return true because “leetcode” can be segmented as “leet code”.
解题思路
该问题给了我们一个字符串s和一个字典dict,要求我们根据字典判断字符串s能否全部根据字典中的单词进行分割。我们可以这样思考:字符串s可以被全部分割,即组成字符串s的子字符串全部都在字典dict中,而判断子字符串是否在dict中,我们可以一个一个字符的判断,用一个bool类型的数组或者向量,向量或数组的长度为字符串s的长度加1,然后每一位初始设为false,第一位设为true。然后遍历没一个字符,如果该字符在dict中就将对应位置的数组设为true,每一位的判断先要满足前一位为true的条件,然后再进行判断,最后得出的字符串s长度的位置为真即代表可以完全分割。
代码展示
#include<iostream>#include<stdlib.h>#include<stdio.h> #include<string>#include<vector>#include<algorithm>using namespace std;class Solution {public: bool wordBreak(string s, vector<string>& wordDict) { int size = s.size(); vector<bool> dp(size + 1, false); dp[0] = true; for(int i = 1; i <= size; i++){ for(int j = 0; j < i; j++){ if(dp[j]){ vector<string>::iterator re = find( wordDict.begin(), wordDict.end(), s.substr(j, i - j)); if (re != wordDict.end()) dp[i] = true; } } } return dp[size]; }};int main(){ string s; cout<<"请输入原始字符串s:"; cin>>s; cout<<"请输入字典向量的额元素个数n:"; vector<string> wordDict; int n; string a; cin>>n; while(n--){ cin>>a; wordDict.push_back(a); } Solution solution; bool result=solution.wordBreak(s, wordDict); if(result == true) cout<<"True"<<endl; else cout<<"False"<<endl; return 0;}
运行结果展示
阅读全文
0 0
- LeetCode 139. Word Break
- 139.Word Break
- [LeetCode]139.Word Break
- 139. Word Break
- [leetcode] 139.Word Break
- leetcode 139. Word Break
- [LeetCode]139. Word Break
- 139. Word Break LeetCode
- 139. Word Break
- 139. Word Break
- LeetCode-139.Word Break
- LeetCode *** 139. Word Break
- LeetCode 139. Word Break
- 139. Word Break
- LeetCode 139. Word Break
- 139. Word Break
- 139. Word Break
- [leetcode] 139. Word Break
- Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()
- BioSolveIT SeeSAR.v7.1 Win32 1CD
- Ubuntu配置java/hadoop环境变量以及运行hadoop的helloworld实例
- Android逆向之利用Xposed绕过悬浮窗权限
- Java 8 新增特性Lambda表达式
- 139. Word Break
- IO流(2)--定义小数组拷贝
- 交换两个整数的值
- Ciclop开源3D扫描仪软件---Horus源码分析之src\horus\engine\calibration\laser_triangulation.py
- USB转串口TTL板RX电平异常导致无法收到数据
- Geometric.Glovius.Pro.v4.4.0.489.Win32_64 2CD
- 五、Android安全机制之反编译
- 在线学习&Map Reduce(斯坦福machine learning week 10)
- 机器学习(周志华西瓜书) 参考答案 总目录