用C语言实现给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 单词是指仅由字母组成、不包含任何空格字符的最大子字符串。 如: 输入:"Hello World" 输出:5 解释:最后一个单词是"World",长度为5
时间: 2024-01-24 13:17:29 浏览: 53
以下是用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` 的长度。然后从字符串末尾开始遍历,如果遇到空格字符,则判断前面是否有单词,如果有则退出循环,返回最后一个单词的长度。如果遇到非空格字符,则说明当前字符属于最后一个单词的一部分,累加单词长度。最后返回最后一个单词的长度即可。
相关问题
c语言给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 单词是指仅由字母组成、不包含任何空格字符的最大子字符串。
可以使用指针来遍历字符串,从后往前找到最后一个单词的开始位置和结束位置,然后计算出长度即可。
具体实现可以参考下面的代码:
```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语言编写一个将一个字符串由字符串中的若干空格分割为若干字符串的函数
```
#include <stdio.h>
void split_string(char *str) {
int i = 0;
while (*str) {
if (*str == ' ') {
printf("\n"); // 换行
}
else {
printf("%c", *str); // 打印字符
}
str++; // 指针后移
}
}
int main() {
char str[] = "hello world";
split_string(str);
return 0;
}
```
该函数将输入的字符串按空格分割成若干个字符串,并打印输出。在主函数中,调用该函数并传入需要分割的字符串作为参数。具体的实现是遍历字符串中的每个字符,如果遇到空格,则换行打印;否则,打印字符。