c语言给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 单词是指仅由字母组成、不包含任何空格字符的最大子字符串。
时间: 2023-08-14 18:11:21 浏览: 96
可以使用指针来遍历字符串,从后往前找到最后一个单词的开始位置和结束位置,然后计算出长度即可。
具体实现可以参考下面的代码:
```c
int lengthOfLastWord(char* s) {
int len = strlen(s);
int end = len - 1;
// 找到最后一个非空格字符的位置
while (end >= 0 && s[end] == ' ') {
end--;
}
if (end < 0) {
return 0;
}
int start = end;
// 找到最后一个单词的开始位置
while (start >= 0 && s[start] != ' ') {
start--;
}
return end - start;
}
```
这里先从字符串末尾开始找到最后一个非空格字符的位置,然后再向前找到最后一个单词的开始位置。最后返回结束位置与开始位置之差即可得到最后一个单词的长度。如果字符串中没有单词,则返回0。
相关问题
用C语言实现给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 单词是指仅由字母组成、不包含任何空格字符的最大子字符串。 如: 输入:"Hello World" 输出:5 解释:最后一个单词是"World",长度为5
以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int lengthOfLastWord(char *s) {
int len = strlen(s);
int lastWordLen = 0;
for (int i = len - 1; i >= 0; i--) {
if (s[i] == ' ') {
if (lastWordLen > 0) break;
} else {
lastWordLen++;
}
}
return lastWordLen;
}
int main() {
char s[] = "Hello World";
printf("%d\n", lengthOfLastWord(s)); // 输出:5
return 0;
}
```
首先,我们计算字符串 `s` 的长度。然后从字符串末尾开始遍历,如果遇到空格字符,则判断前面是否有单词,如果有则退出循环,返回最后一个单词的长度。如果遇到非空格字符,则说明当前字符属于最后一个单词的一部分,累加单词长度。最后返回最后一个单词的长度即可。
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 单词是指仅由字母组成、不包含任何空格字符的最大子字符串。 如: 输入:"Hello World" 输出:5 解释:最后一个单词是"World",长度为5 输入:" fly me to the moon " 输出:4 解释:最后一个单词是"moon",长度为4 输入:s = "luffy is still joyboy" 输出:6 解释:最后一个单词是长度为6的"joyboy"用C语言实现代码
```c
int lengthOfLastWord(char * s){
int len = strlen(s);
int last_word_len = 0;
bool word_started = false;
for(int i = len - 1; i >= 0; i--)
{
if(s[i] != ' ')
{
word_started = true;
last_word_len++;
}
else if(word_started)
break;
}
return last_word_len;
}
```
阅读全文