Java 按降序排列已排序的字符串

Java 按降序排列已排序的字符串,java,Java,我希望这个字符串按重复字符降序排序 例如,我有一个字符串:“aabbbc”或“ddfssskkk” 所需字符串为:“bbbaac”或“ssskkkddf” 我不会给你一个完整的答案,但希望能让你更容易:) 因此,请利用数组字母频率中有3个b的2个a和1个c的知识,根据需要对字符串进行排序:)这就是您需要的,有很多字符串操作 private static String sortDuplicates(String in) { StringBuilder sb = new StringB

我希望这个字符串按重复字符降序排序

例如,我有一个字符串:“aabbbc”或“ddfssskkk”


所需字符串为:“bbbaac”或“ssskkkddf”

我不会给你一个完整的答案,但希望能让你更容易:)


因此,请利用数组
字母频率
中有3个
b
的2个
a
和1个
c
的知识,根据需要对字符串进行排序:)

这就是您需要的,有很多字符串操作

  private static String sortDuplicates(String in) {

    StringBuilder sb = new StringBuilder(in);
    char[] chars = in.toCharArray();
    List<Integer> indexes = new ArrayList<Integer>();

    int count = 0;
    for (int i = 0; i < chars.length; i++) {
      if (i < chars.length - 1 && chars[i] != chars[i + 1]) {

        if (count == 0) {
          sb.append(chars[i]);
          indexes.add(i);
        } else {
          count = 0;
        }
      } else {
        count++;
      }
    }

    for (Object a : indexes.toArray()) {
      sb.deleteCharAt((Integer) a);
    }

    char[] a = sb.toString().substring(0, sb.length() - indexes.size()).toCharArray();
    Arrays.sort(a);
    StringBuilder d = new StringBuilder(new String(a)).reverse();

    return d.toString() + sb.substring(sb.length() - indexes.size());
  }
私有静态字符串排序重复(字符串输入){
StringBuilder sb=新的StringBuilder(in);
char[]chars=in.toCharArray();
列表索引=新的ArrayList();
整数计数=0;
for(int i=0;i
您尝试过做什么?照目前的情况,问题很可能已经解决。请至少包括一些努力。这似乎比较直截了当;将其分成若干组,按两个标准对这些组进行排序:首先是字符数,如果组长度相等,则为字符本身。@DaveNewton如何将其分成若干组?在Arrays类或char[]中需要使用什么方法?您只需迭代字符并对其进行计数;我会考虑查看一些API(例如,代码> java .Lang.Stult),看看有没有什么让你想到的。如果你必须处理类似于
“aabbaacccc”
的事情,你需要决定这意味着什么。发布的专业提示,希望它们有用。没有必要在每件事上都加上“提前感谢”,这往往会被删掉(导致工作)。“请帮帮我”,有时也被解读为一种乞讨。对于你的一些问题,你已经收到了强烈的反对票,他们有时会觉得太宽泛,或者像这里一样,没有研究。问问自己,你是否对每个问题都表现出了努力,这将有助于提高你的接受度。
[2, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  private static String sortDuplicates(String in) {

    StringBuilder sb = new StringBuilder(in);
    char[] chars = in.toCharArray();
    List<Integer> indexes = new ArrayList<Integer>();

    int count = 0;
    for (int i = 0; i < chars.length; i++) {
      if (i < chars.length - 1 && chars[i] != chars[i + 1]) {

        if (count == 0) {
          sb.append(chars[i]);
          indexes.add(i);
        } else {
          count = 0;
        }
      } else {
        count++;
      }
    }

    for (Object a : indexes.toArray()) {
      sb.deleteCharAt((Integer) a);
    }

    char[] a = sb.toString().substring(0, sb.length() - indexes.size()).toCharArray();
    Arrays.sort(a);
    StringBuilder d = new StringBuilder(new String(a)).reverse();

    return d.toString() + sb.substring(sb.length() - indexes.size());
  }