【发布时间】:2019-03-18 12:50:20
【问题描述】:
arr.push_back("1");
arr.push_back("34");
arr.push_back("3");
arr.push_back("98");
arr.push_back("9");
arr.push_back("76");
arr.push_back("45");
arr.push_back("4");
sort(arr.begin(), arr.end(), myCompare);
//Here is the compare function
int myCompare(string X, string Y)
{
string XY = X.append(Y);
string YX = Y.append(X);
return XY.compare(YX) > 0 ? 1: 0;
}
//output should be 998764543431
我对例如的排序有些困惑。我们有号码{"1","34","3","98","9","76","45","4"}。当我们第一次比较 2 个字符串时,我们有 2 个选项 134 和 341 因此341 更大,我们将得到 341 作为返回的字符串。
类似地,我们在下一次迭代中获得3341,在下一次迭代中获得983341,在下一次获得9983341,但是当76 到达时,它必须在开头或结尾追加,要么将998334176或769983341 这是错误的。我错过了什么吗?
【问题讨论】:
-
看起来我得到了您期望的答案。你如何打印结果
arr? -
for (int i=0; i
标签: c++ arrays string sorting vector