首页 > 试题广场 >

统计一个字符串出现最多的字母

[编程题]统计一个字符串出现最多的字母
  • 热度指数:1695 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
实现一个函数,输入一个字符串,返回该字符串出现最多的字母

输入描述:
字符串


输出描述:
出现次数最多的字母
示例1

输入

aab

输出

a

说明

返回结果

备注:
统计一个字符串出现最多的字母
//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);

发表于 2022-03-12 06:02:57 回复(0)
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分是不是有点低了...

发表于 2022-03-06 21:41:27 回复(2)
js实现
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)
}


发表于 2022-03-26 22:18:25 回复(0)
var s=readline()
var sArr = s.split('');
var map = new Map()
var val = 0
for (var i = 0; i < sArr.length; i++) {
    if (map.has(sArr[i])) {
        var val = map.get(sArr[i])
        map.set(sArr[i], ++val)
    } else {
        map.set(sArr[i], 1)
    }
}
var max = 0, res = ''
for (var [j, val] of map) {
    if (max < val) {
        max = val
        res = j
    }
}
console.log(res)
发表于 2022-02-25 21:05:41 回复(0)
var str=readline();//输入
var arr=[];//搞个空数组
//先算有几个
for(var i=0; i<str.length;i++){//按照输入长度遍历
    var char =str[i];//获得当前字母
    if(arr[char]===undefined){//数组中是否存在字母
        arr[char]=1;//不存在就1
    }else{
        arr[char]++;//存在就+1
    }
}
//比大小
var maxChar,count=0;
for(var key in arr){
    if(arr[key]>count){
        maxChar=key;
        count=arr[key];
    }
}
console.log(maxChar);
发表于 2023-02-04 18:17:40 回复(0)
虽然说是错误答案,但是思路是没错的,直接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];
}

发表于 2022-09-18 23:44:18 回复(0)
可以用reduce实现吗可以用reduce实现吗
发表于 2022-08-30 16:52:09 回复(0)
//暴力解决
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)


发表于 2022-08-24 21:16:15 回复(0)
let arr = readline().split('');
let obj = {}
arr.forEach((a)=>{
    let v = 1
    if(!obj.hasOwnProperty(a)){     //obj中没有当前a的key就添加
        obj[a] = v
    }
    else{
        obj[a]++      //已有的a值+1
    }
})
let max = Math.max(...Object.values(obj))     //利用max直接算出最大的value
for (var i in obj){     //找到对应value的key
    if(obj[i] == max){
        print(i)
    }
}

发表于 2022-08-23 15:56:21 回复(0)
    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)

发表于 2022-07-27 10:09:04 回复(0)
const str = readline();
const map = new Map();
str.split("").forEach((x)=>{
    map.set(x,(map.get(x) || 0) + 1)
})
const arr = Array.from(map).sort((a,b) => b[1]-a[1])
console.log(arr[0][0])

发表于 2022-04-01 10:11:07 回复(0)
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)

发表于 2022-03-22 22:04:53 回复(0)
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));
}
发表于 2022-03-11 15:15:57 回复(0)
利用python自带函数和桶:
a=[0]*222
for i in input():
    a[ord(i)]+=1
print(chr(a.index(max(a))))


发表于 2022-02-24 17:47:12 回复(0)

function checkStr(str) {
      // 使用对象来储存出现的次数
      let obj = {}
      for (let i = 0; i < str.length; i++) {
        obj[str.charAt(i)] ? obj[str.charAt(i)] += 1 : obj[str.charAt(i)] = 1
      }
      // 定义最大次数
      let maxStr, maxNum = 0
      // 遍历对象
      for (let k in obj) {
        if (obj[k] > maxNum) {
          maxNum = obj[k]
          maxStr = k
        }
      }
      return `出现次数最多的字符是${maxStr},共出现了${maxNum}次`

发表于 2022-02-23 15:09:32 回复(0)