抛出'std :: logic_error'字符串比较实例后终止调用

时间:2019-05-23 14:38:10

标签: string algorithm c++11 stderr

组成一组整数中的最大数字。整数集可以超过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无效

感谢任何帮助。

0 个答案:

没有答案