【JS】字串中的單詞數 #字串 Easy
阿新 • • 發佈:2018-11-30
統計字串中的單詞個數,這裡的單詞指的是連續的不是空格的字元。
請注意,你可以假定字串裡不包括任何不可列印的字元。
輸入: “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
返回 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 提交記錄