58. Length of Last Word
58.1 题目描述:
Given a string s consists of upper/lower-case alphabets and empty space characters ’ ‘, return the length of last word in the string.
If the last word does not exist, return 0.
Note: A word is defined as a character sequence consists of non-space characters only.
For example,
Given s = “Hello World”,
return 5.
58.2 解题思路:
思路一:从后往前遍历。首先找到字符串中第一不为’ ‘的值的坐标,该坐标即为最后一个Word的尾字母。然后继续遍历,如果碰到’ ‘,则遍历结束,否则,count++。最后返回count。
思路二:同思路一相同,不过写法上更优雅。设置count=0,first=s.length() - 1。第一个遍历从后向前遍历,如果first大于等于0,且其字符等于’ ‘,则first–;第二个遍历,如果first大于等于0,且其字符不等于’ ‘,则first–,count++。最后返回count。
58.3 C++代码:
1、思路一代码(6ms):
class Solution115 {
public:
int lengthOfLastWord(string s) {
if (s.length() == 0)
return 0;
int first = -1;
for (int i = s.length()-1; i >= 0; i--)
{
if (s[i] != ' ')
{
first = i;
break;
}
}
if (first == -1)
return 0;
int count = 0;
for (int i = first; i >=0 ; i--)
{
if (s[i] == ' ')
break;
else
count++;
}
return count;
}
};
2、思路二代码(6ms)
class Solution115_1 {
public:
int lengthOfLastWord(string s) {
int count = 0;
int first = s.length() - 1;
while (first >= 0 && s[first] == ' ')
first--;
while (first >= 0 && s[first] != ' ')
{
count++;
first--;
}
return count;
}
};
58.4 Python代码:
2、思路二代码(35ms)
class Solution(object):
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
count=0
first=len(s)-1
while first>=0 and s[first]==' ':
first-=1
while first>=0 and s[first]!=' ':
first-=1
count+=1
return count