美文网首页
LeetCode --- 58.最后一个单词的长度

LeetCode --- 58.最后一个单词的长度

作者: KM_0d16 | 来源:发表于2020-02-01 10:38 被阅读0次

LeetCode --- 字符串、数组
简书专栏:https://www.jianshu.com/nb/41796568
知乎专栏:https://zhuanlan.zhihu.com/c_174823416

一、题目描述

来源:力扣(LeetCode)
给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。
如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。

示例:
输入: "Hello World"
输出: 5

要求实现函数:
public int lengthOfLastWord(String s) {}

二、实现思路以及代码

2.1 思路一:直接法

本题较简单,首先想到的就是根据空格分隔字符串,再返回即可。但是缺点也很明显,如果是一篇文章,那么会浪费大量的无用空间

public int lengthOfLastWord(String s) {
        if(s.trim().equals("")) return 0;
        s = s.trim();
        String[] strs = s.split(" ");
        return strs[strs.length - 1].length();
    }

2.2 思路二:指针遍历法

定义一个变量count,从后向前扫描字符串,count依次增加,当扫描到空格的时候返回count即可,该方法在时间和空间上均优与方法一

public int lengthOfLastWord(String s) {
        if(s.trim().equals("")) return 0;
        s = s.trim();
        int count = 0;
        for(int i = s.length()-1; i >= 0; i--) {
            if(s.charAt(i) != ' ') {
                count++;
            } else {
                return count;
            }
            
        }
        return count;
    }

三、测试代码

   public static void main(String[] args) {
        String s1 = "hello world java";
        String s2 = "hava a dream";
        System.out.println(lengthOfLastWord(s1));
        System.out.println(lengthOfLastWord(s2));
    }

输出结果为:

4
5

相关文章

网友评论

      本文标题:LeetCode --- 58.最后一个单词的长度

      本文链接:https://www.haomeiwen.com/subject/tlmtxhtx.html