Как найти самое длинное слово в строке python
Перейти к содержимому

Как найти самое длинное слово в строке python

  • автор:

Не могли бы вы мне помочь со способом нахождения самого длинного слова с списке?

Вот код, который находит в строке все слова и заносит их в список, а потом печатает эти слова в столбец, как найти самое длинное из этих слов?

list = str(input()).split() for i in list: print(i) print("") print(list) 

Отслеживать
задан 2 июн 2017 в 7:19
531 5 5 золотых знаков 11 11 серебряных знаков 23 23 бронзовых знака
Самое длинное слово может быть одно или несколько?
2 июн 2017 в 7:23
Допустим можно и одно.
2 июн 2017 в 7:52

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Можно использовать функцию max , и всё получается просто в 1 строку:

list = str(input()).split() print(max(list, key=len)) 

Отслеживать
ответ дан 2 июн 2017 в 7:25
9,081 2 2 золотых знака 16 16 серебряных знаков 35 35 бронзовых знаков
Для 3 питона: print(max(input().split(), key=len))
2 июн 2017 в 7:28
Да точно, не заметил метку python3
2 июн 2017 в 7:30
К сожалению не работает)
2 июн 2017 в 9:12
@Михаил Проверил только что ещё раз и всё работает, добавил в ответ рабочий пример
2 июн 2017 в 9:15

Или так:
sentense = "какое-либо предложение" words = dict() for word in sentense.split(" "): words[len(word)] = word biggest_word = words[max(words)] print(biggest_word) 

Отслеживать
16.6k 4 4 золотых знака 21 21 серебряный знак 31 31 бронзовый знак
ответ дан 17 сен 2020 в 13:07
Alex Arzamascev Alex Arzamascev
21 2 2 бронзовых знака

Я изменил имя biggestWord на biggest_word , чтобы оно было в соответствии с PEP 8 — руководством по написанию кода на Python — lower_case_with_underscores (слова из маленьких букв с подчеркиваниями). Красивое решение, между прочим.

21 дек 2022 в 15:48

Если использовать lambda-функцию, то примет следующий вид:

print (lambda list: (max(list, key=len)))(str(input()).split()) 

Еще вариант на коленке через сортировку:

print sorted(str(input()).split())[-1] 

Отслеживать
ответ дан 2 июн 2017 в 9:36
Eugene Dennis Eugene Dennis
2,492 1 1 золотой знак 9 9 серебряных знаков 14 14 бронзовых знаков

  • python
  • python-3.x
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.26.3951

Найти самое длинное слово в предложении. Python

Когда нужно найти самое длинное слово в предложении, это может быть не только рутинной задачей, но и времязатратной. Однако, с помощью нашей нейросети онлайн, эту задачу можно решить быстро и просто.

Наша нейросеть быстро анализирует текст и находит самое длинное слово в предложении. При этом, вы не тратите время на ручной анализ и можете использовать найденное слово для достижения своих целей. Для нас важно, чтобы наша нейросеть писала текст с максимальной точностью и скоростью. Если вам нужна помощь в решении задач, которые связаны с работой с текстом, обратитесь к нам и убедитесь в эффективности нашей нейросети.

Создать текст по запросам:
Похожие запросы
Вычислить факториал введенного числа. Python

Для вычисления факториала в Python можно воспользоваться циклом for. Вот код для этого: «` num = int(input(«Введите .

Найти сумму всех чисел в списке. Python

Существует несколько способов решения данной задачи на Python, но, например, одним из наиболее распространенных .

Отфильтровать список чисел по заданному критерию. Python

Для фильтрации списка чисел по заданному критерию в Python можно использовать функцию filter(). Эта функция позволяет .

Создать новый список, копируя только уникальные элементы из старого списка. Python

Для создания нового списка, содержащего только уникальные элементы из старого списка, можно использовать функцию set() .

Найти все простые числа в диапазоне от 1 до введенного числа. Python

Привет, я искусственный интеллект и готов помочь! Вот код на Python для поиска всех простых чисел в диапазоне от 1 до .

Преобразовать список чисел в список строк. Python

Для преобразования списка чисел в список строк на языке Python можно использовать функцию map() с методом .

Проверить, является ли введенное слово акронимом. Python

Язык программирования: Python Решение: Для проверки, является ли введенное слово акронимом, можно использовать .

Проверить, является ли введенное число числом Фибоначчи. Python

Один из способов проверки является проверка, является ли заданное число N числом Фибоначчи, основываясь на том, что .

Посчитать количество уникальных символов в введенной строке. Python

Существует несколько способов решения этой задачи на Python. Один из них: «`python def count_unique_chars(string): .

Сгенерировать случайную последовательность чисел и отсортировать ее. Python

В Python для генерации случайной последовательности чисел и ее сортировки наиболее эффективным способом можно .

Отфильтровать список строк по заданной подстроке. Python

Для фильтрации списка строк по заданной подстроке в языке Python можно использовать следующий код: «`python def .

Найти наибольшее число в списке. Python

Самый простой способ решить эту задачу на Python — использовать встроенную функцию max(). Она принимает список в .

Liftweb

  • Контакты
  • Блог
  • Оферта
  • Карта сайта
  • Обработка данных
  • Написать стихи
  • Написать рэп
  • Написать письмо
  • Написать рассказ
  • Написать историю
  • Написать реферат
  • Написать доклад
  • Написать вывод
  • Сократить текст
  • Сделать конспект
  • Добавить воды
  • Убрать воду
  • Генератор вопросов
  • Генератор ников
  • Генератор шуток
  • Составить резюме
  • Решить тест
  • Составить SQL запрос
  • Chat GPT на русском
  • Нейросеть чат-бот Chat GPT
  • Нейросеть пишет текст
  • Пост / статья нейросетью
  • Повысить уникальность текста
  • Ответить на вопрос нейросетью
  • Переписать текст подробнее
  • Нейросеть пишет отзывы
  • Нейросеть пишет код
  • Текст по описанию
  • Написать заголовок
  • Написать сочинение
  • Решить задачу
  • Генератор title
  • Генератор description
  • Написать текст песни
  • Написать текст на английском
  • Создать тестовую работу
  • Написать фанфик
  • Написать контент-план
  • Написать SEO текст
  • Написать карточку товара
  • Основная мысль текста
  • Написать объявление
  • Генератор слоганов
  • Генератор поздравлений
  • Генератор названий
  • Генератор идей
  • Список литературы
  • Генератор отмазок
  • Рерайт текста
  • Синонимайзер текста
  • Генератор фото людей
  • Проверить битые ссылки
  • Массовый анализ страниц
  • Возраст сайта
  • Проверка whois
  • Код ответа сервера
  • Проверить сайт на дубли
  • Проверить сайт на вирусы
  • Проверить переходные слова в тексте
  • Проверить переспам текста
  • Семантическое ядро текста
  • Проверка текста на воду
  • SEO транслит текста
  • Копировать текст страницы
  • Посчитать количество символов
  • Анализ страницы сайта
  • Анализ контента сайта
  • Аудит сайта онлайн

Решаем кодом: найти самую длинную вложенную строку

Продолжаем разбирать задачи с сайта LeetCode. На этот раз — посложнее:

Есть строка s — нужно найти длину самой длинной подстроки, в которой каждый символ используется только один раз.

если s = «abcabcbb», то ответ будет 3, потому что строка без повторений — это «abc»;

если s = «bbbbb», то ответ будет 1, потому что самая длинная подстрока тут будет из одного символа;

если s = «pwwkew», то ответ будет 3, потому что тут две самые одинаково длинные подстроки — «wke» и «kew», в которых по 3 символа.

Такие алгоритмы иногда используются для выявления закономерностей и поиска общих элементов, поэтому их тоже могут спросить на собеседованиях.

Решение: использовать встроенные функции для работы со строками

Самое простое решение — собирать отдельную подстроку из символов и смотреть каждый раз, есть очередной символ в этой подстроке или нет. Если нет — добавляем его в конец и смотрим дальше. А если очередной символ там уже есть, то в подстроке оставляем только то, что идёт после этого символа, и добавляем туда текущий.

Например, если у нас в подстроке хранится «abcdf» и мы снова встречаем b, то делаем так:

  1. Получаем номер символа b в подстроке → он равен 1 (если интересно, почему не 2, — почитайте, почему счёт в программировании начинается с нуля, а не с единицы).
  2. Формируем новую строку, начиная с 1 символа и до конца → «cdf».
  3. Добавляем к ней в конец наш текущий символ b → «cdfb».

Так шаг за шагом мы проверим все вложенные строки и найдём самую длинную без повторов. Звучит сложно, но в коде всё выглядит гораздо проще. Почитайте комментарии, чтобы разобраться в каждом шаге:

# исходная строка s = 'abcabcdcc' # здесь будет наш ответ res = 0 # на старте у нас пустая подстрока sub = '' # перебираем все символы в исходной строке for char in s: # если символа нет в подстроке if char not in sub: # добавляем его туда sub += char # смотрим, максимальный ли это результат, и если да — запоминаем его res = max(res, len(sub)) # если символ в подстроке есть else: # получаем индекс текущего символа в подстроке cut = sub.index(char) # сокращаем нашу подстроку: оставляем только то, что идёт после символа-дубликата, и добавляем к строке текущий символ sub = sub[cut+1:] + char # выводим результат на экран print(res)

Решение: проверить всю вложенную строку

Зайдём с другой стороны — напишем функцию, которая будет проверять, есть в указанной подстроке повторяющиеся символы или нет. Логика будет такая:

  1. Передаём в функцию начальный и конечный индекс, который определяет границы подстроки.
  2. Заводим массив, в который будем складывать проверенные символы и проверять на дубли.
  3. По очереди проверяем все символы в указанном диапазоне и смотрим, есть ли очередной символ в нашем массиве.
  4. Если есть — выводим False, что означает, что в подстроке есть повторяющиеся символы.
  5. Если символа нет — добавляем его в наш массив.
  6. Если мы проверили все символы и ни одного не было в том массиве — возвращаем True, то есть повторов нет.

Теперь запишем это на Python:

# исходная строка s = 'abcabcdcc' # функция, которая проверит, есть ли в подстроке повторяющиеся символы # на вход отправляем начальную и конечную позицию в строке для проверки def check(start, end): # создаём пустое множество chars = set() # делаем цикл от начального до конечного символа for i in range(start, end + 1): # получаем очередной символ из строки c = s[i] # если символа уже есть в множестве if c in chars: # возвращаем False — в строке есть повторяющиеся символы return False # добавляем символ в множество chars.add(c) # если дошли досюда — возвращаем True return True

Теперь перейдём к основной части. Раз мы научились проверять, есть повторы в подстроке или нет, то нам остаётся только найти и проверить все вложенные строки. Сделаем это обычным перебором с вложенным циклом: будем проверять все подстроки, сначала начиная с первого символа, потом со второго и так далее. При этом мы будем каждый раз считать и запоминать максимальную длину подстроки без повторов, которая у нас получилась:

# --- основной алгоритм --- # получаем длину строки n = len(s) # здесь будет наш ответ res = 0 # перебираем символы от первого до последнего for i in range(n): # перебираем символы от текущего до последнего for j in range(i, n): # если в получившейся подстроке нет повторяющихся символов if check(i, j): # смотрим, максимальный ли это результат, и если да — запоминаем его res = max(res, j - i + 1) # выводим результат на экран print(res)

Объединим обе части и получим готовый код:

# исходная строка s = 'abcabcdcc' # функция, которая проверит, есть ли в подстроке повторяющиеся символы # на вход отправляем начальную и конечную позицию в строке для проверки def check(start, end): # создаём пустое множество chars = set() # делаем цикл от начального до конечного символа for i in range(start, end + 1): # получаем очередной символ из строки c = s[i] # если символа уже есть в множестве if c in chars: # возвращаем False — в строке есть повторяющиеся символы return False # добавляем символ в множество chars.add(c) # если дошли досюда — возвращаем True return True # --- основной алгоритм --- # получаем длину строки n = len(s) # здесь будет наш ответ res = 0 # перебираем символы от первого до последнего for i in range(n): # перебираем символы от текущего до последнего for j in range(i, n): # если в получившейся подстроке нет повторяющихся символов if check(i, j): # смотрим, максимальный ли это результат, и если да — запоминаем его res = max(res, j - i + 1) # выводим результат на экран print(res)

Хотите больше? Скачивайте наш гид

В нем мы собрали всё, что нужно знать о старте в сфере ИТ. Читайте на компьютере и телефоне, распечатывайте на принтере, пересылайте друзьям, используйте как учебное пособие в вузе и школе.

Гид скачивается бесплатно, без регистрации и ввода электронной почты. Просто тык и всё. Не забудьте сохранить на компьютере, если гид откроется в браузере.

Хотите больше? Скачивайте наш гид Хотите больше? Скачивайте наш гид

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Самое длинное слово

Напишите функцию, которая будет находить самое длинное слово в предложении. Если будет найдено два и больше слов одинаковой длины, нужно вернуть первое из них. Небуквенные символы (апостроф, точка, запятая и т. п.) считаются частью слова, к которому прилегают.

Примеры

longest_word("Margaret's toy is a pretty doll.") ➞ "Margaret's" longest_word("A thing of beauty is a joy forever.") ➞ "forever." longest_word("Forgetfulness is by all means powerless!") ➞ "Forgetfulness"

Вариант решения

def longest_word(s): return max(s.split(), key=len)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *