![](/img/trans.png)
[英]Java program to find the character that appears the most number of times in a String?
[英]Need to find the character most frequent in a string and return the number of times it appears
public static int mostCommonChar(String foog){
int anArray[] = new int[foog.length()];
int foober = 0;
char f;
for (int i = 0; i > foog.length(); i++){
f = foog.charAt(i);
foober = 1;
for (int j = i + 1; j < foog.length(); j++){
if (f == foog.charAt(j)){
foober++;
}
anArray[i] = foober;
}
}
Arrays.sort(anArray);
int max = anArray[anArray.length - 1];
System.out.println(max);
return 5;
}
返回5就是这样,它可以工作,然后当它返回时,我将返回max,但是现在我必须打印它。
现在我很确定自己搞砸了很多事情。 但是我认为它们的最高编号仍会保留到最后,并且通过对数组进行排序,我可以检索出最频繁出现的字符的次数。
对于字符串,我使用“ habakkuk”,并且由于有3 k,我希望打印“ 3”,但没有。 谁能告诉我我在做什么错? 谢谢!
你只有一个小错字
for (int j = i + 1; j > foog.length(); j++)
应该
for (int j = i + 1; j < foog.length(); j++)
旁注:您可以改善算法。 现在,它以O(n²)运行,但是您可以通过为字母中的每个字母保留一个计数器来在O(nlogn)中进行操作。
int[] charCount = new int[26];
char[] chars = foog.toLowerCase().toCharArray();
for (char c : chars) {
charCount[c - 'a']++;
}
Arrays.sort(charCount);
int max = charCount[charCount.length - 1];
或者,您甚至可以通过查看最大值来使其甚至在O(n)中运行,您甚至不必进行排序。
int[] charCount = new int[26];
char[] chars = foog.toLowerCase().toCharArray();
for (char c : chars) {
charCount[c - 'a']++;
}
int max = Arrays.stream(charCount).max().getAsInt();
只是一个建议;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.