写了一个,没测,楼主测测有问题告诉我
bool isWord(string s)
{
if(s=="this") return true;
if(s=="is") return true;
if(s=="desk") return true;
if(s=="top") return true;
if(s=="desktop") return true;
return false;
}
void Helper(string &inputS, int start, string &tmpStr, vector &res)
{
if(start == inputS.size())
{
//删除多余的空格
tmpStr.erase(tmpStr.end()-1);
res.push_back(tmpStr);
//补回来以便正确的backtracking
tmpStr.push_back(' ');
return;
}
int i;
string str;
for(i=start;i{
if(isWord(inputS.substr(start,i-start+1)))
{
tmpStr.append(inputS.substr(start,i-start+1));
tmpStr.push_back(' ');
Helper(inputS,i+1,tmpStr,res);
tmpStr.erase(tmpStr.end()-(i-start+2), tmpStr.end());
}
}
}
vector GetValidSentence(string inputS)
{
int size = inputS.size();
vector res;
string tmpStr="";
Helper(inputS, 0, tmpStr, res);
return res;
}