58. Length of Last Word

题目:

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 }

 

posted @ 2016-06-12 10:27  panini  阅读(184)  评论(0编辑  收藏  举报