美文网首页算法
字符串最低字典序拼接

字符串最低字典序拼接

作者: 一凡呀 | 来源:发表于2018-01-17 19:55 被阅读0次

    题目:

    image.png

    思路:

    先解释何为字典序,借用百度百科


    image.png

    首先我们一般都会想到,一个数组,要把所有元素组合起来,字典序最小,那就把小的数字放前面大的放后面就行了,但是实际上这种想法是错误的,例如数组{b,ba},字典序b<ba,但是拼接起来bba>bab
    所以我们又想到了一种思想就是把str1和str2拼接起来比较大小,即str1.str2>=str2.str1,那么就把str2放在前面,用的是贪心,具体证明看牛客网初级班第八章,数学思想的运用,

    代码:

        public static class MyComparator implements Comparator<String> {
            @Override
            public int compare(String a, String b) {
                return (a + b).compareTo(b + a);
            }
        }
    
        public static String lowestString(String[] strs) {
            if (strs == null || strs.length == 0) {
                return "";
            }
            Arrays.sort(strs, new MyComparator());
            String res = "";
            for (int i = 0; i < strs.length; i++) {
                res += strs[i];
            }
            return res;
        }
    
        public static void main(String[] args) {
            String[] strs1 = { "jibw", "ji", "jp", "bw", "jibw" };
            System.out.println(lowestString(strs1));
    
            String[] strs2 = { "ba", "b" };
            System.out.println(lowestString(strs2));
    
        }
    

    相关文章

      网友评论

        本文标题:字符串最低字典序拼接

        本文链接:https://www.haomeiwen.com/subject/mlouoxtx.html