力扣链接:58. 最后一个单词的长度,难度等级:简单。
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 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 <= 10^4s仅有英文字母和空格' '组成s中至少存在一个单词
思路
站长 (张健): 👋
大家好!我是张健。
我深知学习算法和找到好工作之间的挑战。因此,除了这个项目,我个人还开发了
leader.me
— 这是程序员打造个人IP的终极平台,包含作品集、简历和博客等。
🚀 掌握算法是基础,而 leader.me 助您完美展示技能,顺利拿到 Offer!
立即前往 leader.me 打造你的程序员专属个人IP →
- 求最后一个单词的长度,我们可以用
split(),last(),len()这样的方法。 - 不过这种题目其实是想考察程序员对
index的控制能力。 - 最后一个单词在最后,如果从前向后求解,并不是很方便。有什么其它方法吗?
点击查看答案
可以直接从后往前求解。只要考虑两种情况:当前字符是空还是非空。
起初,如果看到空字符就处理下一个字符,看到非空字符length就加1。
如果length > 0,说明之间已经遇到字符了,这时,如果当前字符是空,就可以返回结果了。
复杂度
时间复杂度
O(N)
空间复杂度
1
Python #
class Solution:
def lengthOfLastWord(self, s: str) -> int:
length = 0
for i in range(len(s) - 1, -1, -1):
if s[i] == " ":
if length > 0:
return length
continue
length += 1
return length
Ruby #
# @param {String} s
# @return {Integer}
def length_of_last_word(s)
length = 0
(s.size - 1).downto(0) do |i|
if s[i] == " "
return length if length > 0
next
end
length += 1
end
length
end
Java #
class Solution {
public int lengthOfLastWord(String s) {
int length = 0;
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(i) == ' ') {
if (length > 0) {
return length;
}
continue;
}
length++;
}
return length;
}
}
C++ #
class Solution {
public:
int lengthOfLastWord(string s) {
int length = 0;
int n = s.size();
for (int i = n - 1; i >= 0; i--) {
if (s[i] == ' ') {
if (length > 0) {
return length;
}
continue;
}
length++;
}
return length;
}
};
C# #
public class Solution {
public int LengthOfLastWord(string s) {
int length = 0;
for (int i = s.Length - 1; i >= 0; i--) {
if (s[i] == ' ') {
if (length > 0) {
return length;
}
continue;
}
length++;
}
return length;
}
}
JavaScript #
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function (s) {
let length = 0;
for (let i = s.length - 1; i >= 0; i--) {
if (s[i] === " ") {
if (length > 0) {
return length;
}
continue;
}
length++;
}
return length;
};
Go #
func lengthOfLastWord(s string) int {
length := 0
for i := len(s) - 1; i >= 0; i-- {
if s[i] == ' ' {
if length > 0 {
return length
}
continue
}
length++
}
return length
}
其它语言
欢迎贡献代码到 LeetCode.blog GitHub -> 58. 最后一个单词的长度。感谢!打造你的开发者个人IP
🚀 掌握算法是成功的基石,而全方位展示你的才华则是获得垂青的关键。
我的另一个项目 leader.me —— 专为程序员打造的“全能型”个人品牌展示平台。三位一体(All-In-One)的职场利器:
- 📄 简历 + 作品集 + 博客: 将你的 GitHub 项目、技术心得与职场经历完美融合。
- 🌐 永久免费自定义域名: 支持绑定你自己的独立域名,且该功能永久免费。
- ✨ 顶级行业子域名: 提供
name.leader.me—— 极具职业含金量的专属域名。