【华为机试】HJ1 字符串最后一个单词的长度
【华为机试】 HJ1 字符串最后一个单词的长度
描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例1
输入:
hello nowcoder
输出:
8
说明:
最后一个单词为nowcoder,长度为8
实现前知识点了解
获取用户输入
- cin>>n或者cin>>str;
- getline(istream& is, string& str, char delim);//is通常为cin,delim为停止标记符,默认为/n
通常这样使用getline(cin,str); - cin.getline(string& str, char delim);
- .cin.get();//获取第一个字符,即使是回车也会捕捉;或者一个整数。。
- cin.get(char* ch,int lenght);
- cin.get(char* ch,int len);或cin.get(char* ch);
- scanf(“%d”,&n)
- gets(char* ch)
获取用户不指定数量的输入
while(cin>>n){}
char ch= cin.get();
while(ch != '\n'){
ch = cin.get();
}
while(scanf("%d",%n)= EOF){}
getline()
gets()
思路
从后遍历整个字符串,从第一个非空格开始计算,遇到第一个空格时结束
#实现
#include <iostream>
using namespace std;
//cin>>ch;
//cin.getline(str1,5000);
//getline(cin,str);
int main() {
string str1;
getline(cin,str1);
int last_word_lenght = 0;
int str1_lenght = str1.size();
for(int i = str1_lenght - 1;i >= 0;i--){
if(str1[i] == ' ' && last_word_lenght == 0)
continue;
if(str1[i] == ' ')
break;
last_word_lenght += 1;
}
cout<<last_word_lenght;
}