题目:
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,需要多用例子测试
1 public class Solution { 2 public int lengthOfLastWord(String s) { 3 int start = s.length() - 1; 4 5 while (start >= 0 && s.charAt(start) == ' ') start--; 6 if (start < 0) return 0; 7 int end = start; 8 while (end >= 0 && s.charAt(end) != ' ') end--; 9 return start - end; 10 } 11 }