为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

偶然的你 2022-01-19 15:44:39
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:2b:2c:2d:1a:2b:2c:2在这里,我想停止循环,直到它计数 d = 1。但它再次打印相同的变量?我怎样才能做到这一点?
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

如果您不想打印已经打印的字符,则需要将其保留在 a 中的某个位置,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


查看完整回答
反对 回复 2022-01-19
?
白板的微信

TA贡献1883条经验 获得超3个赞

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


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


查看完整回答
反对 回复 2022-01-19
?
茅侃侃

TA贡献1842条经验 获得超21个赞

不要在循环内打印


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


做这样的事情:


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

  }

}


查看完整回答
反对 回复 2022-01-19
  • 3 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信