题目:
给定一个仅包含大小写字母和空格‘ ’的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回0。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
思路:
使用两个计数器,一个代表的是当前单词的长度(InWordLength),一个代表的是最后一个单词的长度(LastWordLength)。如果该字符不是空格‘ ’的话,将InWordLength加1,然后再将其赋值给LastWordLength,如果该单词是空格的话,就将InWordLength置为0。
最后将LastWordLength进行返回即可。
代码:
//求最后一个字符串的长度
//从前往后遍历(效率低)
int LastWordLength(const char* str)
{
assert(str);
int InWordLength = 0;
int LastWordLength = 0;
while ((*str) != '\0')
{
if ((*str) == ' ')
{
InWordLength = 0;
}
else
{
InWordLength++;
LastWordLength = InWordLength;
}
str++;
}
return LastWordLength;
}
//从后往前遍历(效率高)
int LastWordLength(const char* str)
{
assert(str);
int tail_index = strlen(str) - 1;
int length = 0;
while (tail_index >= 0 && str[tail_index] == ' ')
{
tail_index--;
}
while (tail_index >= 0 && str[tail_index] != ' ')
{
tail_index--;
length++;
}
return length;
}