代码
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。