给定一个字符串类型的数组strs,找到一种拼接方式,使得把所有字符串拼起来之后形成的字符串具有最低的字典序。
输入:{"ba", "b"}
输出::"bab"
思路:
先考虑两个字符串"ba"和"b"的拼接,如果按字典序比较 "b"是小于"ba",字典序小的放前面,字典序大的放后面,那么拼接之后为"bba",实际上是错误的。因为"bba"的字典序是大于"bab"的。
所以拼接两个字符串a和b的话,应该比较a+b和b+a的字典序,字典序小的为a和b拼接的结果。
class Solution {
public:
bool compare(string a, string b)
{
return a+b<b+a;//我的理解是当return为true时的顺序为比较的顺序
}
string lowest(vector<string>& strs) {
if (strs.size()==0) {
return "";
}
sort(strs.begin(),string.end(),compare);
string res="";
for(int i=0,i<strs.size();++i)
{
res+=strs[i];
}
return res;
}
};
网友评论