问题描述
分析
题目要求是返回最后一个单词的长度,那么这里这里可以直接从输入字符串的最后一个下标开始遍历。定义一个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;
}
}
该博客主要介绍了一个Java方法,用于计算字符串中最后一个单词的长度。方法从字符串末尾开始遍历,判断字符是否为单词的一部分,遇到空格则停止计数。同时处理了字符串只有一个单词且无前导空格的情况,避免了下标越界。该方法对于理解和实现字符串处理有帮助。
8万+

被折叠的 条评论
为什么被折叠?



