题目描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
来源:牛客网华为机试题
输入描述
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述
输出一个整数,表示输入字符串最后一个单词的长度。
示例1
输入:Hello Day Day
输出:6
说明:最后一个单词
思路
先求字符串长度,再从字符串最后一个字母开始遍历,利用while循环,循环条件为该字母不是空格,定义一个int型变量count用来计算最后一个单词的长度,循环结束时输出count
具体实现
#include <iostream>
#include <string>
using namespace std;
int main () {
string str;
getline (cin, str); //getline接收包含空格在内的整行数据流,若用scanf则无法接收空格
int count = 0, len = str.length() - 1;
while (len >= 0 && str[len] != ' ') {
len--;
count++;
}
cout << count;
return 0;
}
// 64 位输出请用 printf("%lld")
时间、空间复杂度
O(N)
O(1)
小结
C中一般使用字符数组char str[]来存放字符串,但使用字符数组有时会很麻烦,C++在STL中加入string类型,头文件为#include而不是#include<string.h>,还要在头文件下加"using namespace std;"此时要输入输出整个字符串,只能用cin cout而非scanf printf .故头文件中还有#include而非#include<stdio.h>