算法:58、最后一个单词的长度

题目

给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。

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

实例:

输入: “Hello World”
输出: 5

自己的方法:使用trim()+lastIndexOf() 获取最后一个单词

简单来说就是先去除两端的空格,然后使用 lastIndexOf 这个api 来完成的,简单粗暴。

public int lengthOfLastWord1(String s) {
        if(s == null || s.length() == 0){
            return 0;
        }
        s = s.trim();
        String s1 = s.substring(s.lastIndexOf(" ")+1);
        if(s1 != null){
            return s1.length();
        }
        return s.length();
    }

方法二:从右往左遍历

简单来说,就是从右往左开始遍历,定义一个count 为0,如果开始就是空格,continue,否则找到单词,count增加,再次遇到的空格结束

public int lengthOfLastWord(String s){
        if(s == null || s.length()  ==  0){
            return 0;
        }
        int count = 0;
        for(int i=s.length()-1; i>=0; i--){
            if (s.charAt(i) == ' '){
                if (count == 0){
                    continue;
                }
                break;
            }
            count++;
        }
        return count;
    }

方法三:就是split

代码 自己写,这个方法很简单的哈,split之后,找到最后一个单词,使用length()方法获取长度。

参考

最后一个单词的长度(58)

思考问题

在这里插入图片描述
怎样才能平衡运行时间和内存消耗?

你可能感兴趣的:(算法题)