题目:
给定一个string串的集合,给一个string,把string分割成集合里面的,要求分割次数最小,不能分割返回n/a;
思路:
就是找每一个能匹配到的最大串,继续向下分割就可以了,找不到就返回n/a;其实感觉有问题,不一定能分割完,应该是一个深度搜索的。哈哈
void mincut(const string& str, const set<string>& dict)
{
string tmp = str;
int index = 1;
vector<string> re;
for(int i = 0; i < str.size(); ) {
string tmp1 ;
for(int j = 1; j <=str.size()-i;j++){
string tmp2 = str.substr(i,j);
set<string>::iterator it = dict.find(tmp2);
if(it != dict.end()) {
tmp1 = tmp2;
index = j;
}
}
if(index == 0) {
cout<<"n/a";
return ;
}
i = i+index;
index = 0;
re.push_back(tmp1);
}
for(int i = 0; i <re.size(); i++){
cout<<re[i]<<" ";
}
}