給定乙個字串陣列,找到一種拼接順序,使得所有小字串拼接成的大字串在所有可能的拼接中字典序最小。
例如:給定strarr = ,n = 2。則有兩種拼接順序bacbd和bdbac,顯然第一種拼接的字典序要小於第二種。
我們是否可以這樣認為:如果str1的字典序小於str2的字典序,那麼str1一定就放在前面,也就是str1+str2的字典序一定小於str2+str1的字典序呢?
看下面乙個例子。
strarr = ,如果按照上面的說法就應該是b的字典序小於ba的字典序,那麼拼接後較小的字典序應該是bba。顯然不正確,另一種拼接順序bab的字典序是比bba要小的。
所以,不能單純的按照單個字串的字典序小就把它排在前面的思想。而是應該看二者之和的字典序的大小,也就是:
如果str1+str2 < str2 + str1,則將str1放在前面,否則將str2放在前面。
code:
string maxdictionarysort(vectorvec, int n)
//給字串的排序規則
static bool cmp(string s1, string s2)
字串拼接最小字典序
對於乙個給定的字串陣列,請找到一種拼接順序,使所有小字串拼接成的大字串是所有可能的拼接中字典序最小的。給定乙個字串陣列 strs,同時給定它的大小,請返回拼接成的串。貪心策略1 直接字串排序最後拼接起來 b ba 排序的結果就是 b ba 直接連線是bba,但是實際上是bab更小 貪心策略2 定義乙...
拼接最小字典序字串 (python)
題目 給定乙個字串型別的陣列strs,請找到一種拼接順序,使得將所有的字串拼接起來組成的大寫字串是所有可能性中字典序最小的,返回這個大寫字串。如 strs abc de 返回 abcde 解 假設有兩個字串a,b,a和b拼接起來的字串表示為a.b。如果a.b的字典序小於b.a,就把字串a放在前面,否...
nowcoder 拼接最小字典序
對於乙個給定的字串陣列,請找到一種拼接順序,使所有小字串拼接成的大字串是所有可能的拼接中字典序最小的。給定乙個字串陣列strs,同時給定它的大小,請返回拼接成的串。測試樣例 abc de 2 abcde 定義比較函式st r1 s tr2 st r2 s tr1 然後自定義快排。class prio...