拼接最小字典序

来源:互联网 发布:win7杀毒软件 知乎 编辑:程序博客网 时间:2024/05/17 02:19

Question

对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。

给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串。

测试样例:
[“abc”,”de”],2
“abcde”

Algorithm

可能我第一个想到的就是直接排序,但是这种方法有bug
比如 “ba” “b”如果直接排序,顺序是b ba,但是最小的排序是ba b
所以如果判断两个字符串谁大谁小?方法是比较A+B和B+A的大小

Code

class Prior {public:    static bool compare(string A,string B){        if(A+B<B+A)            return  true;        return false;    }    string findSmallest(vector<string> strs, int n) {        // write code here        sort(strs.begin(),strs.end(),compare);        string res="";        for(int i=0;i<n;i++)            res+=strs[i];        return res;    }};