【JS】字符串中的单词数 #字符串 Easy

统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

请注意,你可以假定字符串里不包括任何不可打印的字符。

输入: “Hello, my name is John” , 输出: 5
输入:var m = “, , , , a, eaefa” ,输出: 6


解法一:

统计字符与空格之间有多少次隔断就可以了

var countSegments = function(s) {

    var status=0, s=s+' ' count=0, len=s.length

    for(var i=0;i<len;i++){
        if(s[i]!=' '){
            status=1
        }else{ 
           if(status==1) count+=1
            status=0
        }
    }

    return count;
}

执行用时:68 ms
已经战胜 77.17 % 的 javascript 提交记录

or

解法1.1:

如果字符是连续的,那么在循环时 ,i 可以不断的跳过

var countSegments = function(s) {

    var status=0, s=s+' ' ,count=0, len=s.length

    for(var i=0;i<len;i++){
        if(s[i]!=' '){
            if(s[i+1]!=' ') i+=1
            status=1
        }else{ 
            
           if(status==1) count+=1
            status=0
        }
    }

    return count;
}

执行用时:64 ms
已经战胜 91.30 % 的 javascript 提交记录


解法二:

用正则代替遍历

大概思路是用一个不会出现的字符如汉字代替空格,然后统计字符串长度 L1

再把汉字删除,统计字符串长度 L2

扫描二维码关注公众号,回复: 4307265 查看本文章

返回 L1 减 L2

var countSegments = function(s) {
    s=s.replace(/\s+/g,"中")
    var l1=s.length
    
    if(s[0]!='中' && s[s.length-1]!='中') {
        l1+=1
    }else if(s[0]=='中' && s[s.length-1]=='中') {
        l1-=1
    }

    s=s.replace(/[中]/g,"")
    var l2=s.length

    return l2==0? 0:l1-l2;
}

执行用时:60 ms
已经战胜 97.83 % 的 javascript 提交记录

猜你喜欢

转载自blog.csdn.net/sphinx1122/article/details/84641792