我的思路是:循环比较取出相同的字符,如果相同则次数自加。但是不知道哪里错了。现在的运行结果是每个字符出现的次数的累加和。。。
代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="http://yancy.cachepro.com/jq/JQ214.js"></script>
<script>
$(document).ready(function(){
$("#button").click(function(){
var a = $("#input").val();
var l = a.length;
var count = 0, temp = 0;
for(var i=0; i<l; i++){
for(var n=0;n<l;n++){
if(a.charAt(n) == a.charAt(i)){
temp++;
}
}
if(temp > count){
count = temp;
}
};
alert (temp);
})
})
</script>
</head>
<body>
<input id="input" />
<button id="button">获取</button>
</body>
</html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
把中间的部分换成下面这样,原因是每次循环的时候temp没有初始化,另外最后alert的应该是count吧...
es6es5给你个优雅点和效率点的方案吧
当然了,一眼看过去就知道,其实正确的答案应该是“天安门”三个字都是最大频次的字符,目前的逻辑只能输出第一个,如果要输出这所有频次相同的最大频次字符,还需要稍微做一些改进
细想了一下,给个思路:
先将字符串排序,然后循环计算每个字符出现的次数,并将出现相同次数的值放在以次数为索引的缓存数组中,然后,缓存数组的最后项即为出现次数最多的字符串数组;
即如:
测试结果如下:
先切割字符串为数组,然后遍历产生字典,再根据出现次数排序,最后输出出现最多的字符数组,代码如下:
http://codepen.io/interjc/pen/GoyMyB