Найдите длину последнего слова ⇐ Python
-
Anonymous
Найдите длину последнего слова
Я работаю над LeetCode 58. Длина последнего слова.
Для строки s, состоящей из слов и пробелов, вернуть длину последнего слова в строке.
Слово — это максимальная подстрока, состоящая только из символов, не являющихся пробелами.
Пример:
Ввод: s = "Отправь меня на Луну"
Выход: 4
Пояснение: последнее слово — «луна» длиной 4.
Это можно тривиально решить следующим образом:
return len(s.split()[-1]) Предполагая, что вопрос задается на собеседовании, принято накладывать искусственные ограничения, так, скажем, встроенный split или splitlines не может быть использовал. Нет проблем.
из оператора импорта метода, not_ из импорта itertools take while, drop while def lengthOfLastWord(s: str) -> int: пробел = вызов метода("isspace") слово = take while(not_(пробел), drop while(пробел, s[::-1])) вернуть len(список(слово)) Это дает мне следующую ошибку:
TypeError: объект bool не подлежит вызову вернуть len(список(слово)) Я, конечно, могу использовать лямбды вместо methodcaller, но, зная, что мне нужно использовать ту же функцию, isspace, приведенная выше попытка кажется более элегантной. В таком языке, как Haskell, я мог бы просто использовать isSpace и not . isSpace напрямую. Python — это не Haskell, как мне добиться того же эффекта?
Обратите внимание, что существуют и другие способы решения этого вопроса, например использование обратного цикла for. Я не ищу другие или лучшие варианты, я просто ищу, как заставить приведенный выше код работать, отрицая вызываемый объект, возвращаемый methodcaller.
Я работаю над LeetCode 58. Длина последнего слова.
Для строки s, состоящей из слов и пробелов, вернуть длину последнего слова в строке.
Слово — это максимальная подстрока, состоящая только из символов, не являющихся пробелами.
Пример:
Ввод: s = "Отправь меня на Луну"
Выход: 4
Пояснение: последнее слово — «луна» длиной 4.
Это можно тривиально решить следующим образом:
return len(s.split()[-1]) Предполагая, что вопрос задается на собеседовании, принято накладывать искусственные ограничения, так, скажем, встроенный split или splitlines не может быть использовал. Нет проблем.
из оператора импорта метода, not_ из импорта itertools take while, drop while def lengthOfLastWord(s: str) -> int: пробел = вызов метода("isspace") слово = take while(not_(пробел), drop while(пробел, s[::-1])) вернуть len(список(слово)) Это дает мне следующую ошибку:
TypeError: объект bool не подлежит вызову вернуть len(список(слово)) Я, конечно, могу использовать лямбды вместо methodcaller, но, зная, что мне нужно использовать ту же функцию, isspace, приведенная выше попытка кажется более элегантной. В таком языке, как Haskell, я мог бы просто использовать isSpace и not . isSpace напрямую. Python — это не Haskell, как мне добиться того же эффекта?
Обратите внимание, что существуют и другие способы решения этого вопроса, например использование обратного цикла for. Я не ищу другие или лучшие варианты, я просто ищу, как заставить приведенный выше код работать, отрицая вызываемый объект, возвращаемый methodcaller.
Мобильная версия