代码
function str(s){
var maxLen = null;
if (!s.replace(/\s/g)){
return s.length;
}else{
var arr = s.split(" ");
for(var i = 1; i < arr.length; i++ ){
if(arr[i].length > arr[i-1].length){
if(maxLen < arr[i].length ){
maxLen = arr[i].length;
}
}else{
if(maxLen < arr[i -1].length ){
maxLen = arr[i - 1].length;
}
}
}
return maxLen;
}
}
解释
需求如题,整条思路分为两步。 判断该句子中单词的个数是不是等于1。通过正则中的
\s
,进行全局匹配空格,if (!s.replace(/\s/g))
,如果没有空格,直接返回s.length
。
- 如果大于1
1.将字符串转化为数组,
var arr = s.split(" ");
。
2.循环数组arr
。
3.我们已经排除传入一个单词的可能性,所以
for(var i = 1; i < arr.length; i++ ){
// 我们这里从数组的第二项开始
}
接下来判断 arr
的第二项和第一项length
的长度;
if(arr[i].length > arr[i-1].length){
if(maxLen < arr[i].length ){
maxLen = arr[i].length;
}
}
将全局变量maxLen
,进行赋值。每次对比前后项数组,检查maxLen
是不是最大。else
中的代码则同理。最后将maxLen
返回,return
。