Как взять первое слово в лексикографическом порядке?
Нужна помощь в задании. Помогите написать код. Строка S длиной не более 100000 символов содержит символы латинского алфавита и пробелы. Необходимо найти слово наибольшей длины. Если таких слов несколько, взять первое в лексикографическом порядке.
Вот код
#include <iostream>
#include <sstream>
int main()
{ setlocale(0, "");
std::string s = "Помогите напейсать код.";
std::string s2, s3;
std::istringstream iss(s);
int max = 0;
while(iss >> s2)
{ if(s2.size() > max)
{ max = s2.size();
s3 = s2;
}
}
std::cout << "Исходная строка : " << s << "\n";
std::cout << "Самое длинное слово: " << s3 << "\n";
std::cin.get();
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Так вы же почти все сделали - осталось выбрать из равных лексикографически меньшее.
if (s2.size() > max)
{
max = s2.size();
s3 = s2;
} else if (s2.size() == max && s2 < s3)
{
s3 = s2;
}