Я решал вопрос по leetcode. Вопрос в следующем: учитывая список неотрицательных целых чисел, расположите их так, чтобы они составляли наибольшее число. У меня есть алгоритм для написания функции компаратора и сортировки списка на основе этого. Я написал следующее:
string largestNumber(vector<int>& nums) {
auto comp = [&] (string &a, string &b){
return a+b>=b+a;
};
vector<string>s;
for(auto x:nums) s.push_back(to_string(x));
sort(s.begin(),s.end(),comp);
string ans="";
for(auto x:s) ans+=x;
if(ans[0]=='0') return "0";
return ans;
}
Я получал сообщение об ошибке времени выполнения,
Line 431: Char 55: runtime error: pointer index expression with base 0xbebebebebebebebe overflowed to 0x7d7d7d7d7d7d7d7c (basic_string.h)
Но я обнаружил, что в операторе возврата лямбда-функции для сравнения двух строк, если я заменю «> = » на «> », я получу правильный ответ, и он будет принят. Могу ли я узнать, что не так при сравнении по знаку «> = »? Я понимаю, что оператор '>' сравнивает строки и выводит их в порядке убывания, но мне любопытно узнать причину ошибки.