繁体   English   中英

我搜索实现 function 获取字符串中出现次数最多的字符并计算它

[英]I search to implement function get most occurence character in string and count it

public class GFG  
{ 
    static final int ASCII_SIZE = 256; 
    static char getMaxOccuringChar(String str) 
    { 

        int count[] = new int[ASCII_SIZE]; 



        int len = str.length(); 
        for (int i=0; i<len; i++) 
            count[str.charAt(i)]++; 

        int max = -1; 
        char result = ' ';   


        for (int i = 0; i < len; i++) { 
            if (max < count[str.charAt(i)]) { 
                max = count[str.charAt(i)]; 
                result = str.charAt(i); 
            } 
        } 

        return result; 
    } 

我停在这里,数不清重复次数最多的字符。

在您的第二个 for 循环中,您需要for (int i = 0; i < count.length; i++)而不是for (int i = 0; i < len; i++)

然后count[i]而不是count[str.charAt(i)]

最后result = i而不是result = str.charAt(i)

问题是您应该迭代count数组中的字符而不是字符串内容。 你已经数过了。 result也将是由i的值表示的字符,因此您可以将i转换为char 最后,除非您想计算空格,否则您应该忽略字符32 (空格)和可能的其他空白字符,否则它们可能最终成为最常见的字符。 这是一个计算重复次数最多的字符的版本:

class GFG {
    public static void main(String[] args) {
        GFG s = new GFG();
        char c = s.getMaxOccuringChar("People say there is nothing like a banana cream pie");
        System.out.println("Max char is " + c);
    }

    static final int ASCII_SIZE = 256;

    static char getMaxOccuringChar(String str) {

        int count[] = new int[ASCII_SIZE];

        int len = str.length();
        for (int i = 0; i < len; i++)
            count[str.charAt(i)]++;

        int max = -1;
        char result = ' ';


        for (int i = 0; i < count.length; i++) {
            if (max < count[i] && i != 32) {
                max = count[i];
                System.out.println("Max: "+max+" char: "+(char)i);
                result = (char)i;
            }
        }

        return result;
    }
}

这将打印出:

Max: 0 char: 
Max: 1 char: P
Max: 6 char: a
Max: 7 char: e
Max char is e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM