题目描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例1
输入:
hello dayday
输出:
6
说明:
最后一个单词为dayday,长度为6
思路
用gets输入字符串,然后从后向前遍历,设置一个新的变量,用来记录从后往前遍历了几个,当遍历到空格时停止,并输入该变量的大小,即为字符串最后一个单词的长度,当没有遇到空格时,整个字符串的长度即为最后一个单词的长度。
具体实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
char a[256];
gets(a);
int len = strlen(a);
int b = 0;
for (int i = len; i > 0; i--)
{
if (a[i - 1] == ' ')
{
printf("%d", b);
break;
}
else
b++;
}
if (b == len)
printf("%d", b);
return 0;
}
时间复杂度
O(n)
小结
c语言掌握的不是很熟练很多基础知识都忘了,strlen获取字符串长度,gets()输入一个字符串,定义字符串变量可以用char a[],即一个数组。
遇到的问题:
1.在编程过程中忽略了字符串向前遍历没有空格的情况。
2.用scanf读取时,读到空格就停止了,改为gets()输入后,问题解决。