华为OJ<字符串最后一个单词的长度>
2018-01-22 10:14
295 查看
华为OJ
<字符串最后一个单词的长度> 题目链接
题目描述计算字符串最后一个单词的长度,单词以空格隔开。
输入描述:
一行字符串,非空,长度小于5000。
输出描述:
整数N,最后一个单词的长度。
输入示例:
输入:hello world
输出:5
解法1:普通字符串处理
运行时间:3ms占用内存:436k
#include<iostream> #include <vector> #include<stack> #include <string> #include <cstring> #include <algorithm> using namespace std; void getFinalWordLength(string str) { int leng=str.size(); string *temp=new string[leng]; //string数组,这里有一定内存浪费,可优化 int p=0; for (int i=0;i<leng;i++) //以空格为分割,将字符串的每个单词放入多个string中 { if(str[i]!=' ') temp[p]+=str[i]; else ++p; } for(int i=leng-1;i>=0;i--) { if(temp[i]!="") { cout<<temp[i].length(); break; } } } int main() { string str; while(getline(cin,str)) { getFinalWordLength(str); cout<<endl; } return 0; }
解法2:string的find_last_of函数
运行时间:3ms占用内存:384k
#include<iostream> #include<string> using namespace std; int main() { string str; while (getline(cin, str)) { int pos = 0,npos = -1; pos = str.find_last_of(' '); //查找最后一个空格的位置,查找失败返回-1 if(pos == npos) //仅有一个单词情况 cout << str.size() << endl; else cout << (str.size() - (pos+1)) << endl; //多个单词情况 } return 0; }
解法3:正则表达式
运行时间:4ms占用内存:504k
#include<iostream> #include <string> #include<regex> using namespace std; void getFinalWordLength(string str) { //多个单词情况,查找条件为:以一个空格开始,后面接n个字母(0<=n<=99),并且到了字符串末尾 regex reg1("\\s[a-zA-Z]{0,99}$"); smatch res_regex1; regex_search(str, res_regex1, reg1); string search_res1 = ""; search_res1 = res_regex1.str(); if (search_res1.length() == 0) { //一个单词情况,查找条件为:从字符串头开始,查找n个连续字母(0<=n<=99),并且到了字符串末尾 regex reg2("^[a-zA-Z]{0,99}$"); smatch res_regex2; regex_search(str, res_regex2, reg2); search_res1 = res_regex2.str(); cout << search_res1.length() ; return; } cout << search_res1.length() - 1; } int main() { string str; while (getline(cin, str)) { getFinalWordLength(str); cout << endl; } return 0; }
相关文章推荐
- 华为OJ平台试题 —— 字符串:字符串最后一个单词的长度
- 【华为OJ】字符串最后一个单词的长度
- 华为oj 字符串最后一个单词的长度
- 【华为OJ】字符串最后一个单词的长度
- 华为OJ 字符串最后一个单词的长度
- 华为oj: 字符串最后一个单词的长度
- 【华为 OJ】 计算字符串最后一个单词的长度,单词以空格隔开
- 华为oj:计算字符串最后一个单词的长度,单词用空格隔开
- 华为OJ:2290 字符串最后一个单词的长度
- 华为oj_字符串最后一个单词的长度
- 华为OJ:字符串最后一个单词的长度
- 华为OJ(一)——字符串最后一个单词的长度
- 华为OJ基础第一题 字符串最后一个单词长度
- 华为OJ题目(五):字符串最后一个单词的长度
- 华为OJ(求字符串中最后一个单词的长度)
- 华为oj之字符串最后一个单词的长度
- 【华为OJ】计算字符串最后一个单词的长度
- 华为OJ——字符串最后一个单词的长度
- 华为OJC++编程题001.计算字符串最后一个单词的长度
- 华为OJ——字符串最后一个单词的长度