Предмет: Информатика, автор: fanforschool

Подскажите пожалуйста, где в коде ошибка? Даю 90 балов



Задача №111314. Самое длинное слово
Дана строка. Найдите в этой строке самое длинное слово и выведите его. Если в строке несколько слов одинаковой максимальной длины, выведите первое из них. Решение оформите в виде функции LongestWord (S), возвращающей значение типа str.

Примеры
входные данные
In a hole in the ground there lived a hobbit.
выходные данные
ground

Приложения:

fanforschool: Но все равно, балов за задачу уже больше, но есть одна ошибка, что при каком то условии она не справляется со временем. Делает слишком долго
nikdissv: такс, давай думать дальше...
nikdissv: а ты добавил проверку на пустую строку?
fanforschool: Да
nikdissv: хм...
nikdissv: наверное всё что я могу ещё посоветовать это стрипать (удалять с начала и с конца строки лишнии символы) строку:
nikdissv: import string
trans = str.maketrans({p: ' ' for p in string.punctuation.replace('-', '')})
striping = string.punctuation+string.whitespace
def Looong(s):
s = s.strip(striping)
return max(s.translate(trans).split(), key=len) if s else ''
print(Looong(input()))
nikdissv: string.whitespace - это невидимые символы, такие как пробел.
nikdissv: + можно, захардкодить значения punctuation и whitespace, и не придется импортировать string
nikdissv: punctuation = '!"#$%&\'()*+,./:;<=>?@[\\]^_`{|}~'
trans = str.maketrans({p: ' ' for p in punctuation})
striping = punctuation+' \t\n\r\x0b\x0c'
def Looong(s):
s = s.strip(striping)
return max(s.translate(trans).split(), key=len) if s else ''
print(Looong(input()))

Ответы

Автор ответа: mirageKZ
1

Python

import re

def LongestWord(s):

   s=re.sub(r'[^\w\s]','', s)

   s=s.split()

   return max(s, key=len)        

print(LongestWord(input()))

Похожие вопросы
Предмет: Русский язык, автор: anz4