实现一个函数,输入一个字符串,返回该字符串出现最多的字母
//JavaScript V8 const str = readline();//获取输入字符串 const map = new Map(); //新建哈希表存储字母及其对应出现次数 for(let i in str){ //遍历字符串,首次遇到的新建,已经遇到过的+1 if(!map.has(str[i])){ map.set(str[i], 1); }else{ map.set(str[i], map.get(str[i]) + 1); } } let maxNums = 0, res = ''; for(let [i, nums] of map){ //遍历哈希表,找到value(nums)最大的对应字母 if(nums > maxNums){ res = i; maxNums = nums; } } console.log(res);
var str =''; while(str=readline()) { let obj = {}; for(let i=0;i<str.length;i++){ var key = str[i]; if(!obj[key]){ obj[key] = 1; }else{ obj[key]++; } } let maxKey = str[0], maxCount = obj[str[0]]; Object.keys(obj).forEach((key,index)=>{ if(obj[key] > maxCount){ maxCount = obj[key];//记录较大的次数 maxKey = key;//记录较大的key值 } }) print(maxKey) }
这套试题,得了54分是不是有点低了...
let str = read_line() function searchMax(str) { for (let i = 0; i < str.length; i++) { let mymap = new Map() if (!mymap.has(str[i])) { mymap.set(str[i], 1) } else { mymap.set(str[i], mymap.get(str[i] + 1)) } } //遍历map找到最多的次数 const arr = Array.from(mymap.values()) let result = Math.max.apply(Math, arr) print(result) }
虽然说是错误答案,但是思路是没错的,直接sort默认字典排序,遍历一次就可以了 第一次在牛客提交编程题完全一脸懵逼,想着一片白板怎么接口啥规范都没有,看了答案才知道要自己读入。。。 function foo(str){ let max=0; let index=0; let count=1; str=str.split('').sort(); for(let i=1;i<str.length;i++){ if(str[i]==str[i-1]){ count++; if(count>max){ max=count; index=i; } } else { count=1; } } return str[index]; }
//暴力解决 let s=readline() let t = new Array(s.length).fill(0) //每一个字母对应一个数组元素的次数,初始均为0 let max = 0; //出现次数最大值 let res = null; //结果 for(let i = 0; i< s.length; i++){ for(let j = i+ 1; j < s.length; j++){ //遍历每个字母之后的元素 if(s[i] === s[j]){ t[i]++; //字母之后出现相同便增加次数 } } max = Math.max(t[i], max) } for(let i = 0; i< s.length; i++){ if(t[i] === max){ //找到数组第i个元素 res = s[i] } } console.log(res)
let str = readline();//获取输入字符串 const map=new Map()//计数器 let arr = str.split('') //将字符串分割为数组 //循环遍历每一个字符,判断map的key如果存在该字符,则将value+1;如果不存在则新增 for(let i = 0 ; i < arr.length;i++){ let val =map.get(arr[i]) if(val){ map.set(arr[i],val+1) }else{ map.set(arr[i],1) } } //获取value中的最大值,并且获取到对应的key,输出 let max=0; //最大值 let key map.forEach((v,k) => { if(max<v){ max=v key=k } }) console.log(key)
let str = readline() let arr = [] str.split('').forEach(item => { if(arr.some(item1 => {return item1.word === item})){ arr[arr.findIndex(item2 => {return item2.word === item})].count += 1 }else{ arr.push({ word:item, count:1 }) } }) arr.sort((a,b) => {return b.count - a.count}) console.log(arr[0].word)
while(line=readline()){ var lines = line.split(' '); var abc = lines[0]; function add(abc){ var str = ''; var num = 0; for(var i =0;i<abc.length;i++){ if(abc.split(abc.charAt(i)).length>num){ str = abc.charAt(i); num = abc.split(abc.charAt(i)).length; } } returnstr; } print(add(abc)); } |