1.题目
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入: s = "Hello World"
输出: 5
示例 2:
输入: s = " fly me to the moon "
输出: 4
示例 3:
输入: s = "luffy is still joyboy"
输出: 6
提示:
- 1 <= s.length <= 104
- s 仅有英文字母和空格 ' ' 组成
- s 中至少存在一个单词
2.答题
思路1
倒序循环数组
如果不是空格,最后一个单词增加当前字符;
如果是空格,判断最后一个单词是否有值,有值则跳出循环,返回最后一个单词的长度,没有,则忽略空格继续执行
public int lengthOfLastWord(String s) {
StringBuilder sb = new StringBuilder();
for (int i = s.length() - 1; i > 0; i--) {
if (s.charAt(i) != ' ') {
sb.append(s.charAt(i));
continue;
}
if (sb.length() > 0) {
break;
}
}
return sb.length();
}
时间复杂度
使用到了1层循环,故为O(n)
空间复杂度
常量O(1)
提交结果
解题中使用到了StringBuilder存放字符串,但是题目没有要求返回字符串,所有可以使用int记录字符串长度即可
public int lengthOfLastWord(String s) {
int length = 0;
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(i) != ' ') {
length++;
continue;
}
if (length > 0) {
break;
}
}
return length;
}
时间复杂度
使用到了1层循环,故为O(n)
空间复杂度
常量O(1)