题目
题目来源
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
思路
看到题目的时候想的是先将字符串reverse一下然后搜索第一个单词即可,后来在实施过程中,想到可以直接从后往前搜索,与倒置的作用是相同的。
相关思考
在写完自己的代码之后,查看了评论区的代码,发现一个思路一致,但是在实现上更优的一种算法。
使用length计数,当length==0时继续执行,而当length!=0而碰上‘ ’的情况下,最后一个单词必然已经识别完成,此时返回length即可(太妙了就是说)
代码(C++/原创)
class Solution {
public:
int lengthOfLastWord(string s) {
int i=0,count=0;
for(i=s.size()-1;i>=0;i--)
{
if(s[i]!=' ')
break;
}
for(int j=i;j>=0;j--)
{
if(s[j]==' ')
break;
else count++;
}
return count;
}
};
代码(C++/力扣)
class Solution {
public int lengthOfLastWord(String s) {
int length = 0;
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(i) != ' ') {
length++;
} else if (length != 0) {
return length;
}
}
return length;
}
}