<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>查找字符串中出现最多的字符和个数</title>
</head>
<body>
<script>
/*
* 问题描述:
* 查找字符串中出现最多的字符和个数?
* 例如:sdjksfssscfssdd -> 字符最多的是s,出现了7次
* 要求:字符串 + 正则两种方法
*
* 解决思路:
* 我们将字符串 sdjksfssscfssdd 表示为下面形式
* {
* s : [s,s,s...],
* d : [d,d,d...],
* ...
* }
* */
var a = 'sdjksfssscfssdd';
/*
* 解法一:字符串方式
* */
(function (a) {
var obj = {};
var num = 0;
var value = '';
for (var i = 0; i < a.length; i++) {
// 如果obj中不存在某个字符属性,就把它添加进去
if (!obj[a[i]]) {
obj[a[i]] = [];
}
// 把值一一填入到obj[a[i]]中
obj[a[i]].push(a[i]);
}
// console.log(obj);
// 找出最多项的那个
for (var attr in obj) {
if (num < obj[attr].length) {
num = obj[attr].length;
value = obj[attr][0];
}
}
var res = '字符最多的是' + value + ',出现了' + num + '次';
alert(res);
})(a);
/*
* 解法二:正则方式
*
* 解决思路:先排序,再计算
* 将 sdjksfssscfssdd 排序为下面的形式
* ss..jj..ff..ss..
* 然后找出出现最多的那个字符和数量
* */
/*(function (a) {
var num = 0;
var value = '';
// 排序
a = a.split('').sort().join('');
// 计算
// \1表示和(\w)相同,这里找出连续相同的字符串
var re = /(\w)\1*!/g;
a.replace(re, function ($0, $1) {
if (num < $0.length) {
num = $0.length;
value = $1;
}
});
var res = '字符最多的是' + value + ',出现了' + num + '次';
alert(res);
})(a);*/
</script>
</body>
</html>
查找字符串中出现最多的字符和个数
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...