58. 最后一个单词的长度:
给你一个字符串 s
,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。文章来源:https://www.toymoban.com/news/detail-534824.html
样例 1:
输入:
s = "Hello World"
输出:
5
解释:
最后一个单词是“World”,长度为5。
样例 2:
输入:
s = " fly me to the moon "
输出:
4
解释:
最后一个单词是“moon”,长度为4。
样例 3:
输入:
s = "luffy is still joyboy"
输出:
6
解释:
最后一个单词是长度为6的“joyboy”。
提示:
- 1 <= s.length <= 104
- s 仅有英文字母和空格 ’ ’ 组成
- s 中至少存在一个单词
分析:
- 面对这道算法题目,二当家的再次陷入了沉思。
- 如果对语言的API比较熟,可能想到直接用空格分割字符串,然后取最后一个字符串的长度即可,但其实执行效率并不是很好,因为这种方式相当于必然遍历解析整个字符串,相当于处理了所有单词,事实上我们只需要遍历一个单词就可以了,但是API战士可以非常轻松愉快,很难不被吸引。
- 从后向前逆序逐个遍历字符是个好办法,尤其是在处理一个包含很多单词的长字符串时,相较于使用API按空格分割字符串的方式,效率优势非常明显。
- 提示说参数至少有一个单词,而且仅有字母和空格,所以想要找到最后一个单词的边界,判断空格就成为了关键。
- 从后向前找到第一个非空格字符(必然是英文字母,即单词的一部分)作为末尾(相当于跳过末尾的空格字符),再继续找到第一个空格字符或者直到字符串的开始位置作为起始,之间就是最后一个单词。
- 题解中rust直接一句到底,感觉非常直观,非常爽快,酷酷的,python作为开发效率的代表,真是不带一点多余的废话,就不那么要求它的执行效率了,其他语言都中规中矩,很容易看懂,但是略显啰嗦。
- 各有优势,没有绝对,但是可以有自己的喜好,存在即合理。
题解:
rust:
impl Solution {
pub fn length_of_last_word(s: String) -> i32 {
s.as_bytes().iter()
.rev()
.skip_while(|&&c| c == b' ')
.take_while(|&&c| c != b' ')
.count() as i32
}
}
go:
func lengthOfLastWord(s string) (ans int) {
index := len(s) - 1
for s[index] == ' ' {
index--
}
for index >= 0 && s[index] != ' ' {
ans++
index--
}
return
}
c++:
class Solution {
public:
int lengthOfLastWord(string s) {
int index = s.size() - 1;
while (s[index] == ' ') {
--index;
}
int ans = 0;
while (index >= 0 && s[index] != ' ') {
++ans;
--index;
}
return ans;
}
};
python:
class Solution:
def lengthOfLastWord(self, s: str) -> int:
return len(s.rstrip().split(" ")[-1])
java:
class Solution {
public int lengthOfLastWord(String s) {
int index = s.length() - 1;
while (s.charAt(index) == ' ') {
--index;
}
int ans = 0;
while (index >= 0 && s.charAt(index) != ' ') {
++ans;
--index;
}
return ans;
}
}
非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~文章来源地址https://www.toymoban.com/news/detail-534824.html
到了这里,关于算法leetcode|58. 最后一个单词的长度(rust重拳出击)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!