文章目录

这是面试时遇到的一道题,与大家分享。

题目是这样的:

提供一个借口`dictionary(str)`:这个借口可以判断`str`是否为一个单词,如果是一个单词这返回`true`,否则返回`false`。
现在需要借助这个借口写一个函数`f(longStr)`:判断这个`longStr`是否可以被完整地分割成单词,即`longStr`由`dictionary(str)`判断为`true`的单词组成,且最后没有多余的字符。

下面给出我的思路:

我们可以递归调用这个函数`f`,如果第`longStr`的`n`个字符被`dictionary()`判断为单词,则用`longStr`的剩余字符串调用接口`dictionary()`,直到剩余的字符串长度为0,其中`n`从1开始递增。

给出我的程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function f ( longStr) {
var n = 1;
var flag = false;
while ( ! flag && n < longStr.length ){
if ( dictionary ( longStr.substring(0,n) )) {
// 如果前n个字符是个单词则递归调用函数f
flag = f( substring(n) );
}else {
// 否则n自增
n++;
}
}
if ( flag || dictionary( longStr.substring(0,n) ) {
// dictionary ( longStr.substring(0,n) 判断整个longStr是否是个单词
return true;
} else {
return false;
}
}

文章目录