輸入n個字符串s[i],你要把他們按某個順序連接起來,使得字典序最小。
(1 <= n <= 100) (每個字符串長度 <= 100) (字符串只包含小寫字母)
Input
-
第一行一個整數n。
-
接下來每行一個字符串s[i]。
Output
一行一個字符串表示把輸入的n個字符串按某個順序連接之后的結果
Input示例
6
it
looks
like
an
easy
problem
Output示例
思路:用sort自定義cmp函數比較字符串字典序大小,排序后輸出即可。
? 最容易想到的是按字典序排序。
? ?個反例是ba b,答案是bab?不是bba。
? 空字符最?還是最??(字典中是最?)
? 如果認為是最?的話,反例是bc b,答案是bbc
? 對于任意2個字符串,如果交換后更優,就交換。
? 類似冒泡排序,相當于按照a + b < b + a排序。
#include <bits/stdc++.h>using namespace std;const int MAXN = 120;bool cmp(string a,string b){return a+b < b+a;
}string s[MAXN];int main(){int N;cin>>N;for(int i=0 ; i<N ; ++i){cin>>s[i];} sort(s,s+N,cmp);for(int i=0 ; i<N ; ++i){cout<<s[i];}cout<<endl;return 0;
}
?