Java:编写一个方法,该方法接受一个字符串并返回每个字符及其出现次数。

3

我需要完成一个程序,它可以接受一个字符串,例如:"Mass",并返回以下输出:

M's: 1 A's: 1 S's: 2

我需要创建一个仅接受一个字符串参数并返回Pair对象数组的方法。Pair对象是上述输出的内容。每个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;

}

我如何让方法auditString在输入"Mass"后正常工作,使它返回一对数组,其中包含以下数据:
- pairs数组将生成3个内存位置 - pairs的第0个元素具有出现1次的字符m, - pairs的第1个元素具有出现1次的字符a, - pairs的第2个元素具有出现2次的字符s。

4
如果这是一份作业,你应该将其标记为作业。 - Rick Mangi
2
如果这是作业,你应该自己完成。或者至少尝试解决问题,并询问你卡在哪里的具体问题。 - chandsie
这可能会有所帮助 https://dev59.com/n3VC5IYBdhLWcg3wfxM8 - GETah
1
你好,欢迎来到stackoverflow。我添加了作业标签,这将有助于引导访问者为您提供正确的帮助来回答您的问题。如果这实际上不是作业,请随意删除它。我还删除了您的子类和相关标签,因为您的问题似乎并没有涉及这些主题。如果您认为我做出了这些更改错误,也可以重新编辑。 - Edward Thomson
1
如果允许的话,Map<Character,Integer> 可能会很方便。 - user166390
2
另外,与C/C++不同,Java风格约定不是以下划线(_)开头命名私有变量。 - Roddy of the Frozen Peas
3个回答

1

由于这是一个作业问题,请考虑以下问题:

  • 您将如何分析给定的输入字符串?显然,您必须查看每个字符以计算所需的结果。
  • 您将如何跟踪分数?每当遇到一个字符时,您可以创建一个Pair对象,但是当您第二次遇到一个字符时,您需要做什么?如何再次获取相同字符的Pair对象?或者,您还可以为每个字符创建Pair对象,然后通过对多次出现的Pair对象(即相同字符)执行某些操作来找到计算实际答案的方法。

1

我猜这是一道作业题,所以我会尽量避免直接回答。

以下是我建议思考这个问题的方式:

  • 什么是字符串?即字符串由什么组成?字符串本质上是数组,如果他们要求你记录一个int数组中数字的频率,你会如何解决这个问题?这个问题的解决方案在逻辑上是相同的。

  • 考虑逐个“部分”地遍历字符串。如何利用“Pair”类,以便您始终可以以这种方式跟踪字母频率?

  • 想象一下,在访问每个字母时,您完全不知道字符串的其余部分。对象(特别是对象)的哪些特征能让您用如此少的“知识”解决问题?

  • 如果“Pair”对象让您感到困惑,请先忽略它。首先掌握逻辑。如果您可以在头脑或纸上逻辑地思考出解决方案,则使用Pair对象应该变得非常清晰。

希望这能有所帮助!


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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接