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.
For example,
Given s = "Hello World",
If the last word does not exist, return 0.
Note: A word is defined as a character sequence consists of non-space characters only.
For example,
Given s = "Hello World",
return 5.
第一种解法是直接遍历整个string 找到相应位置记下来,然后右边减去左边。
主要是集中edge case的判断比较繁琐一点。
代码如下:
这里代码有点问题,不知道为什么自己电脑上面可以过的case在oj上面过不了。
class Solution:
# @param s, a string
# @return an integer
def lengthOfLastWord(self, s):
if s=="":
return 0
left=0
right=len(s)-1
maxleft=0
while right>0 and s[right]==' ':
right-=1
while left<right:
if s[left]==' ' and s[left+1]!=' ':
maxleft=max(maxleft,left)
left+=1
if maxleft==right and s[right]!=' ':
result= 1
elif maxleft==right and s[right]==' ':
result= 0
elif maxleft==0 and right>0:
result= right-maxleft+1
else:
result= right-maxleft
return result
第二种解法是python特有的:
直接利用split 把' '都拆开
class Solution:
# @param s, a string
# @return an integer
def lengthOfLastWord(self, s):
s=s.split()
if not s:
return 0
else:
return len(s[-1])