华为机试题:字符串最后一个单词的长度
2016-11-15 22:47
369 查看
题目描述:
计算字符串最后一个单词的长度,单词以空格隔开。
输入描述:
一行字符串,非空,长度小于5000。
输出描述:
整数N,最后一个单词的长度。
输入例子:
hello world
输出例子:
5
输入有空格的字符串时,主要的两种方法:
方法一:刚看到这道题初始的想法是,使用迭代器,从最后开始,直到遇到空格的那个单词的长度就是答案。
代码:
方法二:对于c++而言,使用动态数组也许会让代码更加简洁,可以直接输出最后一个字符的长度。
方法三:还看见有些讨论当最后是空格的情况,这时候方法一就不行了,这时候就要把最后输入空格的情况排除掉了。
计算字符串最后一个单词的长度,单词以空格隔开。
输入描述:
一行字符串,非空,长度小于5000。
输出描述:
整数N,最后一个单词的长度。
输入例子:
hello world
输出例子:
5
输入有空格的字符串时,主要的两种方法:
string s; char c; while((c=cin.get())!='\n'); s = s + c; //或者 string s; getline(cin, s); //第二种更为常用
方法一:刚看到这道题初始的想法是,使用迭代器,从最后开始,直到遇到空格的那个单词的长度就是答案。
代码:
#include <iostream> #include <string> using namespace std; int main() { string s; char c; while((c=cin.get())!='\n') s=s+c; int m = 0; for (auto i = s.rbegin(); ((*i)!=' ')&&(i!=s.rend()); ++i) m++; cout << m << endl; return 0; }
方法二:对于c++而言,使用动态数组也许会让代码更加简洁,可以直接输出最后一个字符的长度。
#include<iostream> #include<string> #include<vector> using namespace std; int main(){ string input; vector<string>arr; while(cin>>input){ arr.push_back(input); } cout<<arr[arr.size()-1].length()<<endl; return 0; }
方法三:还看见有些讨论当最后是空格的情况,这时候方法一就不行了,这时候就要把最后输入空格的情况排除掉了。
#include<iostream> #include<string> using namespace std; int main() { string s; while(getline(cin,s)){ int n=0,flag=1; for(int i=s.length()-1;i>=0;--i){//倒着计算 if(flag && s[i]==' '){//如果末尾有空格,先清除末尾空格 continue; } else if(s[i]!=' '){ flag = 0; ++n; } else{ break; } } cout << n << endl; } return 0; }
相关文章推荐
- 华为机试题,字符串最后一个单词的长度
- 华为机试题-字符串最后一个单词的长度
- 华为机试题:字符串最后一个单词的长度
- 华为机试题 001计算字符串最后一个单词的长度
- 华为OJ平台试题 —— 字符串:字符串最后一个单词的长度
- 华为机试题3——字符串最后一个单词的长度
- 华为机试题--1.字符串最后一个单词的长度
- 华为OJ(求字符串中最后一个单词的长度)
- 字符串最后一个单词的长度(华为在线训练)
- 华为OJ:字符串最后一个单词的长度
- 华为机试——字符串最后一个单词的长度
- 计算字符串最后一个单词的长度,单词以空格隔开。(华为在线编程题目)
- 牛客网华为机试在线训练字符串最后一个单词的长度
- 华为oj:计算字符串最后一个单词的长度,单词用空格隔开
- 华为机试——字符串最后一个单词的长度
- 【ACM】华为oj--字符串最后一个单词长度
- 【华为OJ】字符串最后一个单词的长度
- 华为OJ题2---字符串最后一个单词的长度
- 华为OJ:字符串最后一个单词的长度
- 【华为OJ】字符串最后一个单词的长度