字符串分解的面试题,该怎么处理

字符串分解的面试题
输入:一个字符串。
输出:提供一个isWord(string s)的函数,分解字符串到单词。
例子:
输入:thisisawesome.
输出: this is awe some
      this is awesome
应为isWord(awe) = true, isWord(some)= tue, isWord(awesome)= true,所以有两个答案。
我在网上看到的个一个答案是用递归做的
string  doit(string &s)
{
    if(s.size() == 0 || isWord(s) = true)
    {
        return s;
    }
    for(int i = 0; i<s.size(); ++i)
    {
        string pre = s.substr(0, i);
        if(isWord(pre))
        {
            string suf = doit(s.substr(i));
            if(suf != string(""))
            {    return pre + " " + suf; }
        }
    }
    return string("");
}
 
但是这样只能得到一个解this is awesome,不能得到this is awe some
请指点一下。
------解决方案--------------------
doit找到一个解后就返回了,所以它只能找到一个解。要找到所有的解,就要把“return”出现的地方换成以某种方式存储找到的解(打印出来或放到数组中等)。

另外,递归的终止条件也不能是"if (s.size() == 0 
------解决方案--------------------
 isWord(s) = true)", 因为即使s是一个单词,你仍然想检查s是否可以分成更小的单词,所以把 isWord的部分去掉。

下面的python代码是采用的把解存到数组中的办法:

In [25]: def isWord(s):
    ...:     return s in ['this', 'is', 'awe', 'some', 'awesome']

In [26]: def doit3(s):
    ...:     if len(s) == 0:
    ...:         return ['']
    ...:     result = []
    ...:     for i in range(1, len(s)+1):
    ...:         if isWord(s[:i]):
    ...:             for suf in doit3(s[i:]):
    ...:                 result.append(s[:i] + ' ' + suf)
    ...:     return result

In [27]: doit3('thisisawesome')
Out[27]: ['this is awe some ', 'this is awesome ']



------解决方案--------------------
其实这样更加简洁,而且上面那段会产生错误的。



void doit(string &s,string all)
{
if(s.size() == 0)
{
cout << all << " " << s << endl;
}
for(int i=1;i<=s.size();++i)
{
string pre = s.substr(0,i);
if(isWord(pre))
{
doit(s.substr(i),string(all + " " + pre));