58. Length of Last Word

题目描述和难度

  • 题目描述:

给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。

如果不存在最后一个单词,请返回 0 。

说明:一个单词是指由字母组成,但不包含任何空格的字符串。

示例:

输入: "Hello World"
输出: 5

思路分析

求解关键:

参考解答

参考解答1:这是我一开始的写法,从前向后遍历。

public class Solution {

    public int lengthOfLastWord(String s) {
        int len = s.length();
        // 特别注意 "a " 这种特殊的测试用例
        // 特别注意 "b   a    ",因此,要使用 while
        while (len > 0 && s.charAt(len - 1) == ' ') {
            len--;
        }
        if (len == 0) {
            return 0;
        }

        int begin = -1;
        int index = 0;
        while (index < len) {
            char curC = s.charAt(index);
            if (curC == ' ') {
                begin = index;
            }
            index++;
        }
        return len - 1 - begin;
    }

    public static void main(String[] args) {
        String s = "a ";
        Solution solution = new Solution();
        int lengthOfLastWord = solution.lengthOfLastWord(s);
        System.out.println(lengthOfLastWord);
    }
}

参考解答2:其实从后向前遍历是更好的办法。

public class Solution2 {

    public int lengthOfLastWord(String s) {
        int len = s.length();
        while (len > 0 && s.charAt(len - 1) == ' ') {
            len--;
        }
        if (len == 0) {
            return 0;
        }
        int res = 0;
        while (len > 0 && s.charAt(len - 1) != ' ') {
            res++;
            len--;
        }
        return res;
    }

    public static void main(String[] args) {
        String s = "a ";
        Solution2 solution2 = new Solution2();
        int lengthOfLastWord = solution2.lengthOfLastWord(s);
        System.out.println(lengthOfLastWord);
    }
}

本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0058-length-of-last-word ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com