华为机试 字符串最后一个单词的长度
计算字符串最后一个单词的长度,单词以空格隔开。
提交网址: http://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da?tpId=37&tqId=21224
一行字符串。
整数N,最后一个单词的长度。
hello world
5
AC代码:
文件名:LastWordLength.cpp
#include<string> #include<iostream> using namespace std; int main() { string str; int count=0, flag=1; // flag用来标记当前字符是否为空格 while(getline(cin, str)) { for(int i=str.length()-1;i>=0;--i) { if(flag && str[i] ==' ') continue; // 如果末尾有空格,先清除末尾空格 else if(str[i] !=' ') { flag=0; count++; } if(flag==0 && str[i] ==' ') break; } } cout<<count<<endl; return 0; }
另一解法:
#include <string> #include <iostream> using namespace std; int main() { string input; string output_str; while( getline(cin,input)) { string::size_type pos=input.rfind(" "); // 反向查找input中空格的位置 output_str.assign(input,pos+1,input.size()-pos); // assign(s, n, len): 以s中第n个字符开始的长度为len的s的子串 cout<<output_str.size()<<endl; } return 0; }
string中assign(s,n,len)的用法:
原型: substring (2) - string& assign (const string& str, size_t subpos, size_t sublen);
例:
std::string base="The quick brown fox jumps over a lazy dog.";
str.assign(base,10,9);
std::cout << str << '\n'; // "brown fox"