// 方1
function fn1(str) {
var arr=str.split('');
//console.log(arr);
var nums={};
for(var j=0;j<arr.length;j++){
var count=1;
for(var i=j+1;i<arr.length;i++){
if(arr[i]==arr[j]){
count++;
arr.splice(i,1);
i--;
}
}
nums[arr[j]]=count;
}
var max=0;
var maxChar;
for(var key in nums){
// var n=Math.max(nums[key]);
if(max<nums[key]){
max=nums[key];
maxChar=key;
}
}
return console.log("出现最多的字符是" + maxChar+ ",出现了" + max + "次");
}
fn1("abcabcbbccccc")
// console.log(fn("abcabcbbccccc"));
//fn("abcabcbbccccc"); // 字符最多的是 c,出现了 7 次
// 方2
function fn2(str){
var arr=str.split('');
var obj={};
for(var i=0;i<arr.length;i++){
var item=arr[i];
//判断 obj 有没有 item 这个属性 ?
// 1. obj[item] == undefined
// 2. 还可以使用 hasOwnProperty(item) 用于判断对象是否有某一个属性 ,结果 true / false
if(!obj.hasOwnProperty(item)){
obj[item]=1;
}else{
obj[item] += 1;
}
}
var max=0;
var maxChar;
for(var key in obj){
// var n=Math.max(nums[key]);
if(max<obj[key]){
max=obj[key];
maxChar=key;
}
}
return console.log("出现最多的字符是" + maxChar+ ",出现了" + max + "次");
}
fn2("abcabcbbccccc");
// 方3
function fn3(str){
var obj={};//定义一个对象
for(var i=0;i<str.length;i++){
var k=str.charAt(i);//获取相应位置的字符
// console.log(k);
if(obj[k]){//obj[k] obj对象中 属性字符K 的值为多少 >0则true 属性k的值加1;
obj[k]++;
}else{//obj[k]的属性值为0
obj[k]=1;
}
}
// console.log(obj);
var max=0;
var maxChar;
for(var key in obj){
if(max<obj[key]){
max=obj[key];
maxChar=key;
}
}
// return maxChar,max;
return console.log("出现最多的字符是" + maxChar+ ",出现了" + max + "次");
}
// var str ="abcabcbbccccc";
// console.log(fn3(str));
fn3("abcabcbbccccc");