[英]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.