letcode每日一题-上升下降字符串

昨天工作有点忙,题目做了没来得及记录,今天补一下!!!

题目描述:

思路: 1.要想再次对字符进行升序和降序的排列,首先我们要把字符从小到大排列,并且要记录次数
2.最后的提示说s 只包含小写英文字母。,所以我们只需要用一个26长度的int数组就可以在记录字符
出现次数的同时进行排序了,应为小写英文字母也就26个。
3.按照题意先对字符进行升序拼接,再进行倒序拼接,直到拼接结束。
代码如下:



public String sortString(String s) {
        int[] count = new int[26];
        for (int i = 0; i < s.length(); i++) {
            count[s.charAt(i) - 'a'] += 1;
        }
        StringBuilder result = new StringBuilder();
        while (result.length() < s.length()) {
            for (int i = 0; i < count.length; i++) {
                if (count[i] > 0) {
                    result.append(((char) (i + 'a')));
                    count[i]--;
                }
            }
            for (int i = count.length - 1; i >= 0; i--) {
                if (count[i] > 0) {
                    result.append(((char) (i + 'a')));
                    count[i]--;
                }
            }
        }
        return result.toString();
    }

posted @ 2020-11-26 10:09  CodeWangHAHA  阅读(42)  评论(0编辑  收藏  举报