Daily LeetCode – day0005 0899. Orderly Queue

// 0899. Orderly Queue
class Solution {
    public String orderlyQueue(String s, int k) {
        if (k == 1) {
            String ans = s;
            StringBuilder sb = new StringBuilder(s);
            int loop = s.length();
            while (--loop > 0) {
                sb.append(sb.charAt(0)).deleteCharAt(0);
                if (sb.toString().compareTo(ans) < 0) {
                    ans = sb.toString();
                }
            }
            return ans;
        } else {
            char[] charArray = s.toCharArray();
            Arrays.sort(charArray);
            s = String.valueOf(charArray);
            return s;
        }
    }
}
学习笔记:
StringBuilder有deleteCharAt操作起来非常快,可惜StringBuilder没有compare函数,所以每次对比要转成String去和ans比较,不然只要ans是StringBuilder,最后把ans转String返回就好了。
String转char数组一开始我翻了一个错误,一开始用了getBytes但实际上返回的是byte类型的数组而不是char类型的,排序一样但要转回来麻烦。
char数组转回来的时候我脑子又抽了,用了toString,结果忘记这个不是转去String而是为了打印用的函数。
最后用了valueOf函数,但其实有copyValueOf也可以,而且一模一样,查了资料说是对char数组来说完全一致,只是为了早期的代码不需要再去做无谓的修改就一直保留着这两个函数。


关于樊轶群

一个善良的理想主义者。
此条目发表在每日LeetCode分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注