给你一个没有间隔的字符串“thisisasentence”,如何将他分割成如下的句子:“this is a sentence”。
提供一个函数用来检验一个字符串是不是单词:bool dic(char* w);
完成下列的函数。要求效率尽可能快。
bool Detect(char* str)
{
}
尽量写出完整思路,最好有伪代码。
下面只是一个不完美的解决方案:
1 bool Detect(char* str)
2 {
3 int len = strlen(str);
4 //字符匹配完毕,返回true
5 if(0 == len)
6 {
7 return true;
8 }
9 //递归匹配剩余字符
10 //回溯体现在i++上面
11 for(int i=0;i<len;i++)
12 {
13 //伪码,复制str[0]--str[i]建立一个字符串
14 char word[] = make_str(str,0,i);
15
16 if(true == dic(word))
17 {
18 if(true == Detect(str+i+1))
19 {//如果剩下的字符构成单词串
20 return true;
21 }
22 }
23 }
24 //当 i== len时,说明剩下的全部字符不构成单词,返回false
25 return false;
26 }
posted on 2011-06-01 21:07
ewook 阅读(311)
评论(0) 编辑 收藏 引用 所属分类:
C++