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的ES6扩展
1.字符串扩展 1. includes(str) : 判断是否包含指定的字符串 2. startsWith(str) : 判断是否以指定字符串开头 3. endsWith(str) : 判断是否以指定 ...
- rundeck配置salt-api
Rundeck 安装: 系统: # cat /etc/issue CentOS release 6.7 (Final) 内核: # uname -r -.el6.x86_64 IP 地址: 172.1 ...
- 15-网页,网站,微信公众号基础入门(网页版MQTT,做自己的MQTT调试助手)
https://www.cnblogs.com/yangfengwu/p/11198572.html 说一下哈,,如果教程哪里看不明白...就去自己百度补充哪一部分,,学习不是死记硬背,需要会学习,永 ...
- 洛谷 P4149 [IOI2011]Race-树分治(点分治,不容斥版)+读入挂-树上求一条路径,权值和等于 K,且边的数量最小
P4149 [IOI2011]Race 题目描述 给一棵树,每条边有权.求一条简单路径,权值和等于 KK,且边的数量最小. 输入格式 第一行包含两个整数 n, Kn,K. 接下来 n - 1n−1 行 ...
- mac 以多tab的方式打开
让mac 始终以多tab的方式打开程序 背景: 开发中始终需要多个 项目 的方式进行处理, 但一直使用 `command + `` 的方式总是比较烦人, 有没有一个比较好的视图方式呢; 即我想在一个窗 ...
- DevExpress.XtraEditors.Repository.RepositoryItem.CreateDesigner()
未将对象引用设置到对象的实例. 此错误的实例(1) 1. 隐藏调用堆栈 在 DevExpress.XtraEditors.Repository.Repository ...
- 远程桌面无法连接 提示不支持FIPS安全级别的解决方法
远程桌面可以通过网络连接到另一台电脑进行操作,可以方便在家操作公司电脑.但是到了这个新公司却出现了一个问题,提示客户端无法建立跟远程计算机的连接,我的天,要命了. 远程桌面无法连接错误提示 仔细一看说 ...
- ArrayMap和HashMap区别
什么是Map? Map的三个特点 1.包含键值对 2.键唯一 3.键对应的值唯一 一:hash 什么是Hash Hash,也可以称为“散列”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出, ...
- js操作复选框 复选框
//复选框点击事件 function checkAll(){ let tp=$("#tp").val(); let all=$("input[name='id']&quo ...
- 把ngnix注册为linux服务 将Nginx设置为linux下的服务 并设置nginx开机启动
一.创建服务脚本 vim /etc/init.d/nginx 脚本内容如下 #! /bin/sh# chkconfig: - 85 15 PATH=/usr/local/nginx/sbin/ DES ...