C++ 工程师养成 每日一题fourth (reverse的使用)
题目:
将一句话的单词进行倒置,标点不倒置。

这道题最简单的解法是使用algorithm提供的reverse()函数
具体步骤我写在代码注释里面:
#include <string>
#include <algorithm>
int main(){
string s;
getline(cin, s); //输入的字符串中包含空格,所以不能使用cin输入(遇到空格会停止),使用getline读取全部的字符(遇到换行符、EOF、自定义符号停止)
auto it = s.begin(); //本体我选择用迭代器进行遍历字符串
reverse(s.begin(), s.end()); //第一步先将整个字符串逆置,之后再分别将每一个单词逆置
while (it!=s.end()){
auto ii = it;
while (ii != s.end() && *ii != ' '){ //找到一个单词的结束位置
ii++;
}
reverse(it, ii); //逆置当前单词
if (ii != s.end()){
it = ii + ; //重新定义下一个单词的开头位置,+1是因为单词之间只有一个‘ ’
ii++;
}
else{ //若当前是最后一个位置,则直接给予结束条件结束循环
it = s.end();
}
}
cout << s; //输出结果
return ;
}
此次最主要的点就是熟悉reverse()的使用
但是单单就这一道题来说还有更优解法,也是我在写完之后才发现其他大佬写的,这里分享出来给大家:
#include<iostream>
using namespace std;
#include<string>
int main()
{
string s1;
string s2; cin >> s1; while (cin >> s2&&getchar() != '\n')
{
s1 = s2 + " " + s1;
} cout << s2 << " " << s1 << endl;
return ;
}
看完表示我确实是菜。。。。
C++ 工程师养成 每日一题fourth (reverse的使用)的更多相关文章
- C++ 工程师养成 每日一题4.5 (迭代器遍历)
首先说明,当每日一题标号不是整数时代表此题是较为简单的,我在这里整理一遍主要是我做错了(没错是我太菜各位大佬无视就好) 题目: 读入一个字符串str,输出字符串str中的连续最长的数字串 此题思路清晰 ...
- C++工程师养成 每日一题(string使用)
题目: 题目来源牛客网:https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId 输入两个字符串,从第一字符串中删 ...
- C++工程师养成 每日一题(vector使用)
题目: 链接:https://www.nowcoder.com/questionTerminal/6736cc3ffd1444a4a0057dee89be789b?orderByHotValue来源: ...
- C++ 工程师养成 每日一题third (子数列排序)
题目: 定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的.牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数 ...
- [每日一题]ES6中为什么要使用Symbol?
关注「松宝写代码」,精选好文,每日面试题 加入我们一起学习,day day up 作者:saucxs | songEagle 来源:原创 一.前言 2020.12.23日刚立的flag,每日一题,题目 ...
- 「每日一题」面试官问你对Promise的理解?可能是需要你能手动实现各个特性
关注「松宝写代码」,精选好文,每日一题 加入我们一起学习,day day up 作者:saucxs | songEagle 来源:原创 一.前言 2020.12.23日刚立的flag,每日一题,题目类 ...
- 「每日一题」有人上次在dy面试,面试官问我:vue数据绑定的实现原理。你说我该如何回答?
关注「松宝写代码」,精选好文,每日一题 时间永远是自己的 每分每秒也都是为自己的将来铺垫和增值 作者:saucxs | songEagle 来源:原创 一.前言 文章首发在「松宝写代码」 2020. ...
- [每日一题]面试官问:Async/Await 如何通过同步的方式实现异步?
关注「松宝写代码」,精选好文,每日一题 时间永远是自己的 每分每秒也都是为自己的将来铺垫和增值 作者:saucxs | songEagle 一.前言 2020.12.23 日刚立的 flag,每日一 ...
- [每日一题]面试官问:for in和for of 的区别和原理?
关注「松宝写代码」,精选好文,每日一题 时间永远是自己的 每分每秒也都是为自己的将来铺垫和增值 作者:saucxs | songEagle 一.前言 2020.12.23 日刚立的 flag,每日一 ...
随机推荐
- JS函数基础
一.函数 1.函数是什么 具有特定功能的n条语句的封装体. 只有函数是可执行的,其它类型的数据是不可执行的. 函数也是对象. 2.为什么要用函数 提高代码复用 便于阅读和交流 3.如何定义函数 函数声 ...
- Xml解析作业与Xml建模andXml建模作业
作业:config.xml解析 1.获取所有action中的type的值 public static void main(String[] args) throws Exception { Input ...
- Ubuntu下手动安装vscode
Ubuntu下手动安装vscode1.下载vscodewget https://vscode.cdn.azure.cn/stable/553cfb2c2205db5f15f3ee8395bbd5cf0 ...
- 洛谷P1434 [SHOI2002]滑雪
题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道在一个区域中最长 ...
- Ubuntu使用小结(主要为后面部署K8s集群做基础铺垫)
包管理 dpkg -L libxml2 #查看libxml2安装了些什么文件 dpkg -s /usr/bin/ls #查看ls是那个包提供的 dpkg -c abc.deb #查看abc. ...
- quick player运行分析
mac应用从AppController.mm源文件的applicationDidFinishLaunching函数启动: . - (void)applicationDidFinishLaunching ...
- Java finally未被执行的情况
一种是先执行了用于终止程序的System.exit()方法,或进程被关闭 还有一种情况是,当前线程一直在执行,在一些业务逻辑里面跳不出来,看上去就像finally一直未被执行 线程被终止的时候也会执行 ...
- SVN更新冲突文件冲突符号的意思
带黄色感叹号的文件为冲突文件,内容会发生变化并且会存在一些特殊符号: <<<<<<< .mine#Mon Feb 18 20:10:37 CST 2013== ...
- sensor【学习笔记】
高通sensor相关介绍不错的文章:https://www.cnblogs.com/linhaostudy/archive/2018/03/16/8578414.html 高通sensor的校准流程: ...
- PhastCons | 序列保守性打分
这是一个进化学上的概念,基因组的序列是不断进化而来的,根据45个脊椎动物的基因组序列,通过多重比对,我们就可以知道人类基因组上每个位置的保守性,一些高度保守的区域可以做非常有意思的下游分析. This ...