判断一个字符串中出现次数最多的字符,并且统计其次数
function maxn(str) {
//先把字符里面的每个元素都取出来(不重复的字符)
var str1 = []
for (var i = 0; i < str.length; i++) {
if (str1.indexOf(str[i]) == -1) {
str1.push(str[i])
}
}
console.log(str1)
//然后再逐个对遍历字符串,看每个元素出现的次数是多少
var str4 = []
for (var j = 0; j < str1.length; j++) {
var str3 = []
var p = str.indexOf(str1[j])
str3.push(p)
while (p != -1) {
p = str.indexOf(str1[j], p + 1)
str3.push(p)
}
str3.pop()
console.log(str3)
str4.push(str3.length)
}
console.log(str4)
//选出出现次数最多的那个字符即可
//比较最大次数
var b = str4[0]
for (var q = 0; q < str4.length; q++) {
if (b < str4[q]) {
b = str4[q]
}
}
console.log(b)
//查找最大次数所在的位置-所对应的字符
console.log(str1[str4.indexOf(b)])
}
maxn('abbbbbbcoefoxyozzopp')
核心算法:利用charAt()遍历字符串,把每个字符都取出来
把每个字符都存储给对象,如果对象有这个属性,就为1,如果已经存在了就+1
遍历对象,得到最大值和该字符
var str = 'abbbbbbcoefoxyozzopp'
var o = {}
for (var i = 0; i < str.length; i++) { //chars是字符串的每一个字符
var chars = str.charAt(i)
if (o[chars]) { //o[chars]得到的是属性值;注意这段代码
o[chars]++
} else {
o[chars] = 1
}
}
console.log(o)
//选取属性值最大的那个属性名即可
//遍历对象
var max = 0
var ch = ''
for (var k in o) {
if (o[k] > max) {
max = o[k]
ch = k
}
}
console.log(max)
console.log(ch);