前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 进阶之路 - 最后一个单词的长度

LeetCode 进阶之路 - 最后一个单词的长度

作者头像
Li_XiaoJin
发布2022-06-10 19:22:41
3470
发布2022-06-10 19:22:41
举报
文章被收录于专栏:Lixj's BlogLixj's Blog
代码语言:javascript
复制
给定一个仅包含大小写字母和空格' '的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。

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

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


示例:

输入: "Hello World"
输出: 5
代码语言:javascript
复制
public class LengthofLastWord {
    /**
     * 不能用split()
     * @param s
     * @return
     */
    public int lengthOfLastWord(String s) {
        String[] sArray = s.split(" ");
        if (sArray.length > 0) {
            return sArray[sArray.length-1].length();
        }
        return 0;
    }

    /**
     * 初版
     * @param s
     * @return
     */
    public int lengthOfLastWord1(String s) {
        int temp = 0;
        /** 最初的时候想直接用trim()来去空格,但是想想好像不太好,然后借鉴了题解的高人的代码,通过循环判断尾部是否有空格,有的话长度就减1,直到尾部没有空格为止
        * 代码:while (lenth >= 0 && s.charAt(lenth) == ' ') lenth--;
        */
        s = s.trim();
        // 通过从后往前遍历字符串,定义一个temp来进行计数,temp每次加1,直到遇到空格后返回当前temp值就是单词的长度。
        for (int i = s.length() -1; i >= 0; i--) {
            if (s.charAt(i) == ' ') {
                return temp;
            }
            temp++;
            // 这里有一种单词是单个字符的情况,如“a ”、“a”等,需要单独进行处理,直接返回0即可。
            if (i == 0) return temp;
        }
        return 0;
    }

    /**
     * 修正后
     * @param s
     * @return
     */
    public int lengthOfLastWord2(String s) {
        int temp = 0;
        int lenth = s.length() -1;
        // 去尾部空格
        while (lenth >= 0 && s.charAt(lenth) == ' ') lenth--;
        // 优化后的代码,最后返回temp就不用在循环里面放i==0的判断了,如果s是空的话也不会走进循环,直接返回0
        for (int i = lenth; i >= 0; i--) {
            if (s.charAt(i) == ' ') return temp;
            temp++;
        }
        return temp;
    }


    /**
     * 网上大佬写的代码,我发现我对while语句用的还是不熟练,得多学学
     * @param s
     * @return
     */
    public int lengthOfLastWord3(String s) {
        int end = s.length() - 1;
        while(end >= 0 && s.charAt(end) == ' ') end--;
        if(end < 0) return 0;
        int start = end;
        while(start >= 0 && s.charAt(start) != ' ') start--;
        return end - start;

    }

    public static void main(String[] args) {
        LengthofLastWord word = new LengthofLastWord();
//        String s = "hello";
        String s = "a bbb  ";
        System.out.println(word.lengthOfLastWord2(s));
    }
}

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/leetcode进阶之路-最后一个单词的长度

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档