LeetCode 1370. Increasing Decreasing String (上升下降字符串)

题目标签:Sort

  先把string sort 一下,字母从小到大排序;

  建立一个 StringBuilder 来加入每一个char:

    从左到右遍历,遇到char 不是space ' ' 和  char 和上一个char 不一样的情况下,添加这个字母,并且把这个字母改成 ' ';

    再从右到左遍历,一样的判定。

 

   自己做完之后看了别人答案,更优解的话,可以利用 int [26] 来计数字母,这种情况就不用把string sort 排序了。

 

 

Java Solution: 

Runtime:  8 ms, faster than 36.27 % 

Memory Usage: 39.4 MB, less than 85.70  %

完成日期:9/7/2020

关键点:sort

class Solution {
    public String sortString(String s) {
        
        char [] strChars = s.toCharArray();
        Arrays.sort(strChars);
        StringBuilder str = new StringBuilder();
        
        while(str.length() < s.length()) {
            char prev = ' ';
            // from left to right
            for(int i = 0; i < strChars.length; i++) {
                if(strChars[i] != ' ' && strChars[i] != prev) {
                    prev = strChars[i];
                    str.append(strChars[i]);
                    strChars[i] = ' ';
                }
            }

            prev = ' ';
            // from right to left
            for(int i = strChars.length - 1; i >= 0; i--) {
                if(strChars[i] != ' '  && strChars[i] != prev) {
                    prev = strChars[i];
                    str.append(strChars[i]);
                    strChars[i] = ' ';
                }
            }
        }
        
        return str.toString();
    }
}

参考资料:n/a

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

posted @ 2020-09-08 06:01  Jimmy_Cheng  阅读(189)  评论(0编辑  收藏  举报