字符串中各字符出现次数的统计
Posted 喵小娇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串中各字符出现次数的统计相关的知识,希望对你有一定的参考价值。
要求:统计一个字符串中 各字符串出现的次数。比如 "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 var str = "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用于判断和分支语句。
以上是关于字符串中各字符出现次数的统计的主要内容,如果未能解决你的问题,请参考以下文章
[HAOI2016]找相同字符 广义后缀自动机_统计出现次数
华为OD机试 - 字母计数(Python)| 真题+思路+代码