题目描述:
Given a string s consists of upper/lower-case alphabets and empty space characters ' '
, return the length of last word in the string.
If the last word does not exist, return 0.
Note: A word is defined as a character sequence consists of non-space characters only.
Example:
Input: "Hello World" Output: 5
我的思路:
我有一句脏话不知当讲不当讲,这道题真的很烦啊,一开始把空格当作一个长度为零的单词了,不对。
就像评论说了not fun at all。搞清楚了就好了,直接翻转整个句子,如果是空格并且i = 0的话,直接break。i 不是零什么也不做。不是空格的话就把计数加一。
我的代码:
class Solution:
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
i = 0
for x in s[::-1]:
if x == ' ':
if i != 0:
break
else:
i += 1
return i
Discuss:
def lengthOfLastWord(self, s):
return len(s.rstrip(' ').split(' ')[-1]) # 1 line版本
def lengthOfLastWord(self, s): # 这个思路也很好,直接在原字符串上查找
ls = len(s)
# slow and fast pointers
slow = -1
# iterate over trailing spaces
while slow >= -ls and s[slow] == ' ':
slow-=1
fast = slow
# iterate over last word
while fast >= -ls and s[fast] != ' ':
fast-=1
return slow - fast
学到:
- rstrip() 删除 string 字符串末尾的指定字符(默认为空格).strip() 方法用于移除字符串头尾指定的字符(默认为空格)。
- split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串