您的位置:首页 > 其它

58. Length of Last Word

2016-06-12 10:27 441 查看
题目:

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"
,
return
5
.

链接: http://leetcode.com/problems/length-of-last-word/

一刷,还是有粗心错误。从后向前遍历,初始化in_word为False,之后如果不为空则count += 1,如果为空则继续往前直到查找到第一个非空的字母。再向前查找空字符,找到或者循环结束时返回。

class Solution(object):
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
in_word = False
count = 0
for rev_idx in range(len(s), 0, -1):
val = s[rev_idx - 1]
if not in_word and val == ' ':
continue
elif in_word and val == ' ':
return count
elif val != ' ':
in_word = True
count += 1
else:
return count if in_word else 0


参考别人代码简化:in_word和count是否为0是一个状态,可省略一个。

class Solution(object):
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
count = 0
for rev_idx in range(len(s), 0, -1):
val = s[rev_idx - 1]
if val == ' ':
if not count:
continue
else:
break
else:
count += 1
return count


2/12/2017, Java

错误:

1. 空格和''没有区分好

2. 第6行的判断条件应该是start < 0,不是start == 0

3. 最后返回时候注意没有+1,需要多用例子测试

public class Solution {
public int lengthOfLastWord(String s) {
int start = s.length() - 1;

while (start >= 0 && s.charAt(start) == ' ') start--;
if (start < 0) return 0;
int end = start;
while (end >= 0 && s.charAt(end) != ' ') end--;
return start - end;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: