【问题标题】:Count groups of characters in string using Java [duplicate]使用Java计算字符串中的字符组[重复]
【发布时间】:2020-08-17 02:06:05
【问题描述】:

基本上我正在阅读一个类似于 AABBCCAACC 的字符串;如何计算用户每组 2 个字符输入了多少次?

我试过这个没有成功:

for (int i = 1; i < str.length(); i+=2) {
  if(str.substring(i, i+1) == "AA");
  {
    countAA++;
  }
}

【问题讨论】:

  • 这能回答你的问题吗? How do I compare strings in Java?
  • 如果你有像AAAA这样的字符串怎么办?它有多少个AA? 2个还是3个?
  • BTW .substring(i, i+1) 可能只返回一个字符,如果您想返回两个字符,请使用i+2 而不是i+1

标签: java string loops count substring


【解决方案1】:

您可以遍历字符并将每个字符的出现情况及其后的字符保存在哈希图中,如下所示:

public static void main(String[] args) {
    String str = "AABBCCAACC";
    System.out.println(getOccurences(str));
}
private static HashMap<String,Integer> getOccurences(String str) {
    HashMap<String,Integer> map = new HashMap<>();
    if(!str.isEmpty() && str.length()>1) {
        char[] characters = str.toCharArray();
        for(int i = 0; i < characters.length-1; i++) {
            String current = ""+characters[i]+characters[i+1];
            if(map.containsKey(current))
                map.replace(current, map.get(current)+1);
            else
                map.put(current,1);
        }
    }
    return map;
}

这里的输出是:

{AA=2, BB=1, CC=2, AB=1, BC=1, AC=1, CA=1}

【讨论】:

    【解决方案2】:

    您可以使用地图来完成这项任务:

    
        public static void main(String[] args) {
            String str = "AABBCCAACC";
            Map<String, Integer> map = new HashMap<>();
            for (int i = 0; i < str.length() - 1; i++) {
                String key = "" + str.charAt(i) + str.charAt(i + 1);
                map.put(key, map.getOrDefault(key, 0) + 1);
            }
            System.out.println(map);
        }
    

    ,输出

    {AA=2, BB=1, CC=2, AB=1, BC=1, AC=1, CA=1}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2011-01-20
      • 2017-07-09
      • 1970-01-01
      相关资源
      最近更新 更多