组成一组整数中的最大数字。整数集可以超过1个数字。
由于数字可以超过一个数字,因此使用贪婪算法并将其降序排序将无济于事。 例如:输入:21和2, 降序排序将给出答案212,这是错误的,因为221> 212
我决定提出以下算法: 我有一个向量字符串作为输入,因此我将std :: sort函数与自定义函数一起使用来对其进行排序。
如果我有两个字符串i =“ 21”和j =“ 2”,则将i,j和j,i连接起来,然后比较结果
bool isGreater(string i,string j){
string a = i+j;
string b = j+i;
return a >= b;
}
string largest_number(vector<string> a) {
string result =" ";
sort (a.begin(),a.end(),isGreater);
for(int i =0; i<a.size(); i++){
result+=a[i];
}
return result;
}
它在某些情况下有效,但我在一些测试用例中失败并得到消息:
stderr: 抛出'std :: logic_error'实例后终止调用 what():basic_string :: _ M_construct null无效
感谢任何帮助。