【发布时间】:2016-03-04 19:31:31
【问题描述】:
我或多或少地完成了我的代码,它适用于大多数字母组合。只有当我输入“iiiaa”之类的内容时它才会失败。它返回“a”出现次数最多,但“aaaii”之类的返回“a”也是最多的。我认为这个问题与某种数值有关,因为如果我列出字母 2 次或更多次后跟字母“a”,就会出现问题。 我目前的代码是:
public static char most_frequent_character(String text)
{
int max_counter = 0;
char max_char = 'a';
for (int i = 1; i < text.length(); i++)
{
char current = text.charAt(i);
int counter = count_occurrences(text, current);
char other_char = text.charAt(i-1);
if (counter>count_occurrences(text, other_char))
{
max_char = current;
}
}
return max_char;
}
count_occurrences 返回字母在单词中出现的次数
【问题讨论】:
-
我收回我所说的这可能是一个价值问题。我认为这与以 'a' 开头的 char max_char 有关
-
对您尝试解决的问题的解释会很有用。
-
if counter > max_counter 然后在 if 中设置 max_counter 就可以了。
-
你的逻辑错了。您只需将当前字符的出现次数与前一个字符的出现次数进行比较,而不是将其与 all 字符的出现次数进行比较。使用一个Map
,然后找到map中值最大的key。 -
@JBNizet 也打败了我。你应该遍历他的字母并制作一个字母和计数的地图,然后找到该地图中最大的。
标签: java if-statement for-loop max frequency