字符串中各字符出現次數的統計
阿新 • • 發佈:2017-06-20
meta logs 1-1 ges 語句 class -1 gif body
要求:統計一個字符串中 各字符串出現的次數。比如 "a1a35b5" 統計出來應該是 a-2, 1-1, 3-1, b-1, 5-2。
思想一:用split方法將key字符切除,比較源字符串長度和新字符串長度,得出key字符個數。
圖例:
代碼:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>階乘相加</title> 6 7 <script> 8 varstr = "afsfs564s8f45sf5s"; 9 var str2 = ‘‘; 10 11 //寫法一: 12 while(str.length>0){ 13 str2=str.split(str[0]).join(‘‘); 14 var times=str.length-str2.length; 15 document.write(str+‘<br>‘ 16 +str2+‘<br>‘ 17+str[0]+‘-‘+times+‘<hr>‘); 18 str=str2; 19 } 20 21 22 //寫法二: 23 for(var i=0;i<str.length;){ 24 str2=str.split(str[0]).join(‘‘); 25 var times=str.length-str2.length; 26 document.write(str+‘<br>‘ 27 +str2+‘<br>‘ 28 +str[0]+‘-‘+times+‘<hr>‘); 29 str=str2; 30 } 31 32 </script> 33 </head> 34 <body> 35 36 </body> 37 </html>
思想二:選出key值,在字符串中匹配與key相等的字符的個數。
代碼:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>階乘相加</title> 6 7 <script> 8 var str = "afsfs564s8f45sf5s"; 9 var str1 = "afsfs564s8f45sf5s"; 10 var str2 = ‘‘; 11 12 13 var jsonObj = {}; //key=value 14 15 for(var i=0;i<str1.length;i++){ 16 jsonObj[str1[i]]?jsonObj[str1[i]]=jsonObj[str1[i]]+1:jsonObj[str1[i]]=1; //如果能找到key值?key=value+1:key=1; 17 } 18 19 document.write(JSON.stringify(jsonObj)); 20 21 </script> 22 </head> 23 <body> 24 25 </body> 26 </html>
運行結果:{"4":2,"5":3,"6":1,"8":1,"a":1,"f":4,"s":5}
反思:
一:while與if的區別:
while用於循環語句,而if用於判斷和分支語句。
字符串中各字符出現次數的統計