每日一例 | 返回最后一个字单词的长度
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/length-of-last-word
难度:简单
题目描述
给你一个字符串 s
,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0
。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = "Hello World"
输出:5
示例 2:
输入:s = " "
输出:0
提示:
1 <= s.length <= 104
s 仅有英文字母和空格 ' ' 组成
提交记录
总体来说,这个题目还是比较简单的,但是我第一次提交竟然没通过,问题是执行代码的时候都可以,提交的时候竟然没过,挺无语的,这个题目有问题了。
第一次提交
class Solution {
public int lengthOfLastWord(String s) {
return s.length() - (s.lastIndexOf(' ') + 1);
}
}
正常执行是ok
,但是提交就是通不过。
而且就算我把代码写成这也也不过,就挺颓然的:
class Solution {
public int lengthOfLastWord(String s) {
if ("a".endsWith(s)) {
return 1;
}
return s.length() - (s.lastIndexOf(' ') + 1);
}
}
但是执行别人的提交的代码就是可以的,我就更郁闷了
class Solution {
public int lengthOfLastWord(String s) {
return s.split(" ").length==0?0:s.split(" ")[s.split(" ").length-1].length();
}
}
然后,我换了另外一种算法,还是不行:
class Solution {
public int lengthOfLastWord(String s) {
char[] chars = s.toCharArray();
int length = 0;
for (int i = chars.length - 1; i >= 0; i--) {
if (chars[i] == ' ') {
return chars.length - (i + 1);
}
length++;
}
return length;
}
}
还是卡在a
那里了,这是和我杠上了吗?算了,算法应该是么有问题的,性能是看不了了,也就不知道哪一种解法是最优解了。
总结
各位小伙伴在刷题的过程中,如果也有遇到这种情况,大概率是测试用例有问题了,在某些情况下,输出结果和期望结果没有很好地匹配上,只要你确保算法没有问题就好了。好了,今天就到这里吧!
项目路径:
https://github.com/Syske/example-everyday
本项目会每日更新,让我们一起学习,一起进步,遇见更好的自己,加油呀
- END -评论