對于一個給定的字符串數(shù)組,請找到一種拼接順序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。
不同于一般的排序,當元素A小于B時,A應該排在B前面。但是排列字符串的時候,字符串長度不一,所以使用以下策略:
- if str1+str2 < str2+str1 ,則str1應排在str2前面
string findSmallest(vector<string> strs, int n) {
for(int i=0;i<n-1;++i)
for(int j=0;j<n-1-i;++j){
if(strs[j]+strs[j+1]>strs[j+1]+strs[j]){
string t=strs[j];
strs[j]=strs[j+1];
strs[j+1]=t;
}
}
string u;
for(int i=0;i<n;++i)
u+=strs[i];
return u;
}