Length of Last Word (leetCode 58)

题目如下:
Given a string s consists of upper/lower-case alphabets and empty space characters ’ ‘, return the length of last word in the string.

If the last word does not exist, return 0.

Note: A word is defined as a character sequence consists of non-space characters only.

For example,
Given s = “Hello World”,
return 5.

public class Solution {
    public static   int lengthOfLastWord(String s) {
            if(s.length()==0||s.equals(" ")){
                return 0;
            }
            //判断字符串中“ ”的下标,如果字符串中不存在,则返回值为-1
            if(s.indexOf(" ")==-1){
                return s.length();
            }
            String[] ss = s.split(" ");
            //ss.length== 0为了防止字符串全由空格组成
            if(ss.length == 0 || ss[ss.length-1].equals(" ")){
                return 0;
            }
            return ss[ss.length-1].length();
        }

        public  static void main(String[] args){
            String s ="                  ";
            int len = lengthOfLastWord(s);
            System.out.println(len);
        }
}

最开始没有考虑到字符串全为空格的情况,造成了下标溢出。采用以上这种方式的大概运行时间为325ms.
又从网上查找了其他方式,发下如下方式只需要250ms:

public class Solution {
    public static   int lengthOfLastWord(String s) {
            if (s != null && !s.trim().equals("")) {  
                String[] arr = s.trim().split(" ");  
                int length = arr[arr.length - 1].length();  
                return length;  
            }  
            return 0; 
        }

        public  static void main(String[] args){
            String s ="                  ";
            int len = lengthOfLastWord(s);
            System.out.println(len);
        }
}

又对我的代码中不需要判断的条件去掉,达到的速度也在250ms左右

public class Solution {
    public static   int lengthOfLastWord(String s) {
            String[] ss = s.split(" ");
            //ss.length== 0为了防止字符串全由空格组成
            if(ss.length == 0 || ss[ss.length-1].equals(" ")){
                return 0;
            }
            return ss[ss.length-1].length();
        }

        public  static void main(String[] args){
            String s ="                  ";
            int len = lengthOfLastWord(s);
            System.out.println(len);
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值