我需要完成一个以字符串为例的程序:“Mass”并将返回输出,如下所示:
M:1 A:1 S:2
我需要创建一个只接受一个字符串参数的方法,并返回一个名为Pair的对象数组。对象是我上面输出的对象。 Pair中的每个元素都包含一个字符以及该字符的出现次数。 这是对类:
public static class Pair
{
public char _char;
public int _occurances;
public Pair(char c)
{
_char = c;
_occurances = 0;
}
}
这是我正在研究的方法:
public Pair[] auditString(String input) {
return Pairs;
}
如果我输入“Mass”并且我的方法返回了一个包含此数据的数组:
如何使此方法auditString正常工作?对数组将生成3个内存位置
元素0处的对具有1次出现的字符m, 元素1处的对具有1个出现的字符a,和 元素2处的对具有2次出现的字符
答案 0 :(得分:1)
由于这是一个家庭作业问题,请考虑以下问题:
答案 1 :(得分:1)
我假设这是作业,所以我会尽量避免一个过于直接的答案。
我建议考虑这个问题的方法:
什么是字符串?即什么是由?组成的字符串?字符串本质上是数组,所以如果他们要求你在int
s数组中记录数字的频率,你会如何解决这个问题呢?这个问题的解决方案在逻辑上是相同的。
考虑逐个浏览String的每个'piece'。如何使用“配对”课程,以便始终可以通过这种方式跟踪字母频率?
想象一下,在您访问的每封信中,您完全忘记了String的其余部分。 Pair类的哪些特性(不太具体,一般的对象)会让你用这么少的“知识”解决问题?
首先忽略“配对”对象,如果它让你感到困惑的话。首先尝试并降低逻辑。如果您可以在脑中或纸上逻辑思考解决方案,那么Pair对象的使用应该变得非常清楚。
希望有所帮助!
答案 2 :(得分:0)
public Pair[] GetLetterPairs(String str)
{
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
str = str.toLowerCase();
for(char c : str.toCharArray())
{
if(!map.containsKey(c))
map.put(c, 1);
else
{
int value = map.get(c);
map.put(c, ++value);
}
}
Pair[] pairs = new Pair[map.size()];
int i = 0;
for(Entry<Character, Integer> entry : map.entrySet())
{
pairs[i] = new Pair(entry.getKey(), entry.getValue());
i++;
}
return pairs;
}