Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Длинное слово - первое

Таир Г Ученик (125), открыт 3 недели назад
Вам дана строка
s
, состоящая из слов и пробелов, разделяющих слова. Определите самое длинное слово в строке и поменяйте его местами с первым. Если существует несколько слов с максимальной длиной, поменяйте первое из них.

Входные данные
В единственной строке задана непустая строка
s
, состоящая из слов и пробелов, разделяющих слова. Слова состоят из строчных букв латинского алфавита. Слова разделены ровно одним пробелом. Длина строки
s
не превосходит
10
3
.

Выходные данные
Выведите исходную строку, поменяв первое слово с самым длинным. Если существует несколько слов с максимальной длиной, поменяйте первое из них.
2 ответа
Андрей Высший разум (477769) 3 недели назад
 t = input().split() # ввод строки как массива слов
i = t.index(sorted(t, key=len, reverse=True)[0]) # индекс первого самого длинного слова
t[0], t[i] = t[i], t[0] # обмен слов местами
print(*t) # вывод
г 2009Ученик (86) 3 недели назад
мне нужно на с++
Андрей Высший разум (477769) г 2009, На C++ будет несколько сложнее. Ищем индекс самого длинного слова в процессе ввода:
 #include <iostream>
#include <vector>

using namespace std;

int main() {
    int mx = -1;
    string s;
    vector<string> t;
    while (cin >> s) {
        if (mx < 0 || s.size() > t[mx].size()) {
            mx = t.size();
        }
        t.push_back(s);
    }
    if (mx > 0) {
        s = t[0];
        t[0] = t[mx];
        t[mx] = s;
    }
    for (auto &s : t) { cout << s << ' '; }
} 
Николай Веселуха Высший разум (377934) 3 недели назад
 #include <algorithm> 
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
int main() {
string line;
getline(cin, line);
istringstream iss(line);
vector<string> words;
string word;
string next;
iss >> word;
words.push_back(word);
size_t i = 0;
size_t j = 0;
while (iss >> next) {
words.push_back(next);
++i;
if (word.length() < next.length()) {
word = next;
j = i;
}
}
if (j != 0) {
swap(words.front(), words[j]);
line.clear();
for (const auto& item : words) line += item + ' ';
line.pop_back();
}
cout << line << '\n';
}
Похожие вопросы