最后一个单词的长度 | LeetCode刷题笔记

1,143 阅读2分钟

这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战


相关文章

LeetCode刷题汇总:LeetCode刷题

一、题目描述


快乐数

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

从简单题目开始刷,锻炼自己的思维能力,为面试准备~

二、思路分析


  • 看看题目的示例,我们来理一理这个思路~

  • 示例 1:

    输入:s = "Hello World"
    输出:5
    
  • 示例2:

    输入:s = "   fly me   to   the moon  "
    输出:4
    
  • 示例3:

  • 输入:s = "luffy is still joyboy"
    输出:6
    
  • 题目要求我们找到最后一个字符串,如何找到最后一个字符串呢?
  • 因为传入的字符串都是用空格来分开的,所以是有迹可寻的。
  • 可以使用split来根据空格来分割成字符数组,那么该数组的最后一个就是最后一个字符串了。

三、AC 代码


  • 字符串分割解法:

    class Solution {
        public int lengthOfLastWord(String s) {
            //将其分割为字符串数组
            String[] arr = s.split(" ");
            //返回数组长度-1的那个数据的长度即是最后一个字符串的长度
            return arr[arr.length-1].length();
        }
    }
    
    • image-20210818101439916.png
    • 这种解法简单粗暴,毫无美观性可言。
  • 倒序循环解法法:

    class Solution {
        public int lengthOfLastWord(String s) {
          int count = 0;
            //先去除头尾的空格
            s = s.trim();
            for (int i=s.length()-1;i>=0;i--){
                //如果遇到的不是空格,即+1,是空格的话证明最后一个单词已经遍历完成
                if(s.charAt(i) == ' '){
                    break;
                }else {
                    count++;
                }
            }
            return count;
        }
    }
    
    • image-20210818103000000.png
    • 从结果可以看出,明显比原先的效率高了很多!
    • 这种思路就是循环,循环yyds!!!

四、总结

  • 解题思路千千万,不管是本办法还好,还是奇思妙想的解法,能解决就是好办法!白猫黑猫能抓老鼠的猫就是好猫!
  • 这种简单的题目解法有千千万万,选择最适合你的即可!下面列举下其他大神的解法,提供参考!
  • 点击跳转:画解算法
  • 其实我真的蛮喜欢我的第一种解法的,虽然效率有点底下,但是好歹完美利用java的方法呀!活学活用!哈哈

**路漫漫其修远兮,吾必将上下求索~ **如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah