zoukankan      html  css  js  c++  java
  • 统计一个字符串中第一次出现且频率最高的字符

    统计一个字符串中第一次出现且频率最高的字符。

    public static char statMostRateChar(String str) {  
        if (str != null && !"".equals(str)) {  
            int charsStat[] = new int[128];  
            int charsFirstIdx[] = new int[128];  
            int strLen = str.length();  
               
            for (int ch = 0; ch < 128;ch++) {  
                charsFirstIdx[ch] = strLen;  
            }  
               
            // 統計字符出現的次數  
            for (int idx = 0; idx < strLen; idx++) {  
                charsStat[str.charAt(idx)]++;  
                // 记录字符第一次出现的位置  
                if (idx < charsFirstIdx[str.charAt(idx)]) {  
                    charsFirstIdx[str.charAt(idx)] = idx;  
                }  
            }  
       
            int mostRateChar = 0;  
            for (int ch = 1; ch < 128; ch++) {  
                if (charsStat[ch] == 0) {  
                    continue;  
                }  
                // 找频率出现最高的字符  
                if (charsStat[mostRateChar] < charsStat[ch]) {  
                    mostRateChar = ch;  
                    // 出现频率一样时,选择出现在前面的数  
                } else if (charsStat[mostRateChar] == charsStat[ch]
                        && charsFirstIdx[mostRateChar] > charsFirstIdx[ch]) {  
                    mostRateChar = ch;  
                }  
            }  
       
            return (char) mostRateChar;  
        } else {  
            return '';  
        }  
    }
    

    :)

  • 相关阅读:
    使用greenDAO遇到的问题
    使用greenDAO生成DAO代码
    Spring中Bean的生命周期
    视频弹幕开源库
    最简MacOs10.8安装
    apache-virtual host
    带删除的EditText
    替换默认debug.keystore文件
    Intellij格式化java和xml
    【数据结构】之二叉树的java实现
  • 原文地址:https://www.cnblogs.com/gotodsp/p/10456544.html
Copyright © 2011-2022 走看看