力扣-58 最后一个单词的长度

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

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

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

示例:

输入: "Hello World"
输出: 5

 

这是一道基础的字符串处理问题。如果想减少代码量,需要对字符串方法有一定的认识。

 

用Java解决这到题时,如果不知道String的 lastIndexOf 方法,可以用 charAt 方法从最后面逐个读取。

从后向前,从第一个非空格字符开始计数,直到遇见空格或下标出界为止。

 

如果知道 lastIndexOf 方法的话,那么代码量就会减少许多。

该方法会返回最后一个字符出现的位置,当然,它还有许多重载方法,不过功能都类似。

这样,如果我们得到最后一个 空格 出现的位置,那么从这个位置到字符串的最后,这段长度就是最后一个单词的长度。

 

代码:

class Solution {
    public int lengthOfLastWord(String s) {
        s = s.trim();
        int x = s.lastIndexOf(' ');
        return s.length() - x - 1;
    }
}

你会发现,在调用这个方法之前,我调用了 trim() 方法。

trim 方法的作用是返回一个 去掉前后所有空格的该字符串。

去掉前后空格的目的是为了防止出现 :"hello world           " 

这种情况会使得 lengthOfLastWord(' ') 产生误判,将最后面的那个空格视为返回结果。而我们需要的是最后一个单词前的空格。

 

最后,再用字符串长度减去最后一个单词前空格的位置,再稍加调试,结果便是我们要的最后一个单词的长度。

你可能感兴趣的:(LeetCode)