转载请注明:http://blog.csdn.net/ict2014/article/details/17565319
原题如下:
题目解析:
判断给定的字符串能否用词典进行切分,切分的每一部分都是词典中的单词。这道题目最容易想到的策略就是O(n^2)的方法,两层for循环即可解决。外层循环i是单词的第一个位置到最后一个位置,内存循环j是从i-1到0,判断是否可以切分。
题目代码:
class Solution {
public:
bool wordBreak(string s, unordered_set<string> &dict)
{
int len = s.size();
bool* note = new bool[len+1];
for(int i = 0; i <= len; ++i)
note[i] = false;
note[0] = true;
for(int i = 1; i <= len; ++i)
{
for(int j = i-1; j>=0; --j)
{
if(note[j] && hasWord(dict, s.substr(j,i-j)))
{
note[i] = true;
break;
}
}
}
bool ret = note[len];
delete[] note;
return ret;
}
bool hasWord(unordered_set<string> &dict, string s)
{
if(dict.find(s) != dict.end())
return true;
else
return false;
}
};