今天在刷题的过程看到一位大神写的代码
来源:互联网 发布:数据挖掘工具主要有 编辑:程序博客网 时间:2024/06/05 16:09
题目描述
对字符串中的所有单词进行倒排。
说明:
1、每个单词是以26个大写或小写英文字母构成;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
输入描述:
输入一行以空格来分隔的句子
输出描述:
输出句子的逆序
输入例子:
I am a student
输出例子:
student a am I
我的代码
#include <iostream>#include <string>using namespace std;void func10(string str){ int i; string temp; for (int i = 0; i < str.size(); ++i) { if (str[i] < 'A' || (str[i] > 'Z' && str[i] < 'a') || str[i] > 'z') { str[i] = ' '; } } while (str.size() > 0) { int pos = str.find_last_of(' '); if (pos == -1) { temp += str; break; } temp += str.substr(pos + 1); i = pos; if (str[i] == ' ') { temp += " "; while (str[i] == ' ') { --i; } } str = str.substr(0, i + 1); } cout << temp << endl;}int main(){ string str; while (getline(cin, str)) { func10(str); } return 0;}
大神代码
void deal(vector<string>&res,string& str, char delim = ' ') { stringstream ss; ss << str; string tmp; while (ss>>tmp) { res.push_back(tmp); }}int main() { string str; while (getline(cin, str)) { vector<string> res; for (int i = 0; i < str.size(); i++) if (!isalnum(str[i])) str[i] = ' '; deal(res, str); cout << res[res.size() - 1]; for (int i = res.size() - 2; i >= 0; i--) cout << " " << res[i]; cout << endl; } return 0;}
巧妙的利用流提取符>>去掉多余的空格!
哎!自己要学的还有很多啊!
0 0
- 今天在刷题的过程看到一位大神写的代码
- 今天在做HDU1495的时候看到了一个代码
- 今天拜读到一位专家的blog,写的不错,记录在这里,时常看看
- 看到一段大神的代码 condition1&condtion2&doSomething
- 介绍一位大神的网站
- 今天看到的一句话
- 今天看到的消息
- 今天看到的,所想
- 今天看到的 排行榜
- 今天看到的一句话
- 今天写的代码总结
- 今天看到的一篇js屏蔽键盘的代码,经典!
- 今天看到的一篇js屏蔽键盘的代码,经典!
- 今天偶然看到的一道题
- 今天写的统计的存储过程
- 今天在论坛里看到一网友问关于网络的最新技术,就随便写了点
- 曾经看过一位大神写的小linux的文章,现在粘贴出来,大家一起分享
- 关于Spring MVC非常详细的介绍(一位大神写的,强烈推荐)
- 欢迎使用CSDN-markdown编辑器
- 设计模式---原型模式
- ADO.NET 快速入门(五):从 DataSet 更新数据库
- 用uid分库,uname上的查询怎么办?(58沈剑)
- Android学习二 布局和按钮点击事件
- 今天在刷题的过程看到一位大神写的代码
- Windows Service服务程序的原理及实现(0)服务主函数 & 控制处理函数
- Android Https相关完全解析 当OkHttp遇到Https
- 函数模板深探
- 深入理解JavaScript执行上下文、函数堆栈、提升的概念
- Kotlin(一)语法基础
- 阿里实习编程题1
- Uva725—除法
- LeetCode100 Same Tree