zoukankan      html  css  js  c++  java
  • 统计字符串中出现最多的字母

    let str = "aabbccdd", 统计字符串中出现最多的字母

    方法一

    关键方法为 String.prototype.charAt
    核心理念为:先遍历字符串中所有字母,统计字母以及对应显示的次数,最后是进行比较获取次数最大的字母。

    /**
     * 获取字符串中出现次数最多的字母
     * @param {String} str
     */
    function getChar(str) {
        if (typeof str !== 'string') return // 判断参数是否为字符串
        const obj = new Object() // 键为字母,值为次数
    	for (let i = 0; i < str.length; i ++) { // 遍历字符串每一个字母
    		let char = str.charAt(i) // 当前字母
    		obj[char] = obj[char] || 0 // 保证初始值为0
    		obj[char] ++ // 次数加1
    	}
    	let maxChar // 存储字母
    	let maxNum = 0 // maxChar字母对应的次数
    	for(let key in obj) { // 遍历obj
    		if (obj[key] > maxNum) {
                maxChar = key // 比较后存储次数多的字母
                maxNum = obj[key] // 以及它对应的次数
            }
    	}
    	return maxChar // 返回结果
    }
    
    let str = 'aabbbccdd'
    console.log('出现次数最多的字母为:' + getChar(str))
    

    方法二

    关键方法为 String.prototype.split
    逻辑和方法一相同,只不过是通过 split 直接把字符串先拆成数组。效率上要比方法一差。

    /**
     * 获取字符串中出现次数最多的字母
     * @param {String} str 
     */
    function getChar(str) {
        if (typeof str !== 'string') return // 判断参数是否为字符串
        const obj = new Object() // 键为字母,值为次数
        const arr = str.split('')
        for (let i = 0; i < arr.length; i++) { // 遍历字符串每一个字母
            let char = arr[i] // 当前字母
            obj[char] = obj[char] || 0 // 保证初始值为0
            obj[char]++ // 次数加1
        }
        let maxChar // 存储字母
        let maxNum = 0 // maxChar字母对应的次数
        for (let key in obj) { // 遍历obj
            if (obj[key] > maxNum) {
                maxChar = key // 比较后存储次数多的字母
                maxNum = obj[key] // 以及它对应的次数
            }
        }
        return maxChar // 返回结果
    }
    let str = 'aabbbccdd'
    console.log(getChar(str))
    
  • 相关阅读:
    SpringBoot的@Import和@ImportResource
    SpringBoot引入其他配置文件
    SpringBoot加载application.properties配置文件的顺序
    Interceptor(拦截器)
    Filter(过滤器)
    ES6数组知识点,巧妙运用数组,对循环说88
    javase基础socket编程之局域网聊天,局域网文件共享
    【金三银四】缓存面试题-web层缓存
    MD5和SHA-1加密算法被我国密码学家王小云破解
    java中的ArrayList 的C语言实现版本。
  • 原文地址:https://www.cnblogs.com/jundong/p/8969636.html
Copyright © 2011-2022 走看看