from Word Break to substr function note
https://oj.leetcode.com/problems/word-break/
这道题目不是重点,重点是用string::substr的一点体会。
substr(size_t pos, size_t len=string::npos)
这个是substr的document,默认第二个参数npos表示取到字符串源串最后面,而且特别注意都是size_t类型,
我有一次掉到坑里去了,第二个参数一定要是>=0的,如果负数就会返回整个源串,要特别注意,另外pos也是>=0,这个倒好理解。
而且这个比较好,只有一种参数列表,这样比较容易记忆使用,当然如果参数列表多,用多了一般也是用自己比较熟悉的那一种。
代码是错的,有些case不行,可能需要回溯,类似dfs这种
bool wordBreak(string s, unordered_set<string> &dict) {
if(s=="") return false;
while(1)
{
if(s=="")
return true;
bool found=false;
int startpos;
string substr1,substr2;
for(unordered_set<string>::iterator it=dict.begin();it!=dict.end();it++)
{
if((startpos=s.find(*it))!=string::npos)
{
found=true;
if(startpos-1>=0)
substr1=s.substr(0,startpos);
else
substr1="";
string substr2=s.substr(startpos+(*it).size(),s.size()-(startpos+(*it).size()));
s=substr1+substr2;
}
}
if(found==false) return false;
}
}