139. 单词拆分
自己的错误代码,没有看出来动态规划,虽然知道暴力不行,很简单的动态规划,然后自己还是被用例打败,最后其实还是学到了
又因为字符串拼接与截取
查看代码
class Solution {
public:
bool wordBreak(string s, vector<string>& wordDict) {
int max_string=0 ;
int min_string=301 ;
// wordDict.push_back("asdfefefe");
// sort(wordDict.begin(),wordDict.end());
// for(int i=0;i<wordDict.size();i++){
// cout<<wordDict[i];
// }主要是测试字符串排序方式
for(int i=0; i<wordDict.size() ; i++){
int length = wordDict[i].size();
max_string = max(max_string,length);
min_string = min(min_string,length);
}
for(int i=min_string; i<=max_string ; i++){
if(test(s,0,i,wordDict,max_string,min_string))
return true;
}
return false;
}
bool test(string s, int left,int step, vector<string>wordDict,int max_string,int min_string){
string temp = s.substr(left,step);
for(int i=0; i<wordDict.size();i++){
if(temp == wordDict[i]){
if( left+step == s.size()) //复制时从起点复制step个,所以left+step是在s中多一个下标的
return true;
else {
for(int j=min_string;j<=max_string;j++){
if(test(s,left+step,j,wordDict,max_string,min_string))
return true;
}
}
}
}
return false;
}
};

浙公网安备 33010602011771号