Java算法——最后一个单词的长度(LeetCode第58题)

该博客主要介绍了一个Java方法,用于计算字符串中最后一个单词的长度。方法从字符串末尾开始遍历,判断字符是否为单词的一部分,遇到空格则停止计数。同时处理了字符串只有一个单词且无前导空格的情况,避免了下标越界。该方法对于理解和实现字符串处理有帮助。

问题描述

 

分析

题目要求是返回最后一个单词的长度,那么这里这里可以直接从输入字符串的最后一个下标开始遍历。定义一个int变量记录最后一个单词的长度用来返回结果,因为字符串可能是以空格结尾的,所以遍历时只有遇到不是空格的字符时才开始计数。判断字符串中的字符是否是空格可以用Character类提供的静态方法isWhitespace(char c)来判断,当字符是空格时会返回true。当开始计数之后,如果当前遍历到的字符的下一个为空格时应该break退出循环,说明已经遍历完最后一个单词了。另外应当注意,如果输入的字符串中只有一个单词并且单词的开头第一个字符前面没有空格,这时再去判断当前字符前面的字符是否是空格会造成下标越界。因此,当当前字符串下标已经到达0时应当break循环。

代码实现

package org.kk.java.april;

/**
 * <p>
 * 最后一个单词的长度
 * 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 <strong>最后一个</strong> 单词的长度。
 * 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
 * </P>
 *
 * @author Kk
 * @since 2022/4/11 10:53
 */
public class Q058 {
    public static void main(String[] args) {
        System.out.println(lengthOfLastWord("aa   "));
    }

    public static int lengthOfLastWord(String s) {
        int result = 0; //记录最后一个单词的长度
        //从字符串最后下标开始遍历
        for (int i = s.length() - 1; i > -1; i--) {
            boolean isWhitespace = Character.isWhitespace(s.charAt(i));
            if (!isWhitespace) {
                result++;
                //当i等于0的时候就不需要判断前面是否有空格了,此时应当break循环否则会出现下标越界
                //当当前字符前一个字符为空格时也应该break
                if (i == 0 || Character.isWhitespace(s.charAt(i - 1)))
                    break;
            }

        }
        return result;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值