如何删除直方图[JAVA]中的重复字符

时间:2018-11-13 19:49:53

标签: java loops histogram

class Mclass {
        public static void main(String[] args) {

        char[] a= {'a','b','c','d','a','b','c'};
        int count = 0;

        for (int i=0; i<a.length; i++)
        {
                  for(int j=0; j<a.length; j++)
                  {
                      if ( a[j] == a[i] )
                          count += 1;
                  }
                  System.out.println(a[i]+":"+count);
                  count = 0;
        }
    }

输出:

a:2 b:2 c:2 d:1 a:2 b:2 c:2

在这里,我想停止循环直到计数d = 1,但它再次打印相同的变量?我该怎么办?

3 个答案:

答案 0 :(得分:1)

如果您不想打印已经打印过的字符,则需要将其维护在Set中,并仅在Set不包含字符时才打印。打印,请将其添加到Set,以便下次在病房中不会被打印。

将代码更改为此,

class Mclass {
    public static void main(String[] args) {
        Set<String> doneSet = new HashSet<String>();

        char[] a = { 'a', 'b', 'c', 'd', 'a', 'b', 'c' };
        int count = 0;

        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length; j++) {
                if (a[j] == a[i])
                    count += 1;
            }
            if (!doneSet.contains(String.valueOf(a[i]))) {
                System.out.println(a[i] + ":" + count);
                doneSet.add(String.valueOf(a[i]));
            }
            count = 0;
        }
    }
}

这将按预期提供以下输出

a:2
b:2
c:2
d:1

答案 1 :(得分:0)

请勿在循环内打印

保存您的计数并在循环外打印。

执行以下操作:

public class Mclass {
    public static void main(String[] args) {

    char[] a= {'a','b','c','d','a','b','c'};
    int count = 0;
    Map<String,Integer> output = new HashMap<>();

    for (int i=0; i<a.length; i++)
    {
              for(int j=0; j<a.length; j++)
              {
                  if ( a[j] == a[i] )
                      count += 1;
              }
              output.put(Character.toString(a[i]), count);
              //System.out.println(a[i]+":"+count);
              count = 0;
    }
    System.out.println(output);
  }
}

答案 2 :(得分:0)

从您已经做的事情开始,首先对数组进行排序,然后尝试计数

import java.util.*;
class Mclass {
    public static void main(String[] args) {
        char[] a= {'a','b','c','d','a','b','c'};
        int count = 0;
        Arrays.sort(a);  // sort the array
        for (int i=0; i<a.length; i++)
        {
          for(int j=i; j<a.length; j++)
          {
              if ( a[j] == a[i] ){
                  count += 1;
                  continue;
              }          
              i=j-1;
              break;
          }
          System.out.println(a[i]+":"+count);
          count = 0;
        }
    }
}

输出

a:2
b:2
c:2
d:1