倒置字符串
来源:牛客网
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
示例1
输入
I like beijing.输出
beijing. like I
思路:
1. 整体逆置字符串
2.单个单词逆置
直接上代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
//创建输入
string s;
getline(cin, s);
//整体逆置
reverse(s.begin(), s.end());
//单个逆置
auto p1 = s.begin(); //创建p1
while(p1 != s.end()){ //循环终止条件为p1指向\0或者s.end()
auto p2= p1; //创建p2
while(p2 != s.end() && *p2 != ' '){ //寻找空格及\0,找到则跳出开始逆置
p2++; //让p2往后走
}
reverse(p1, p2); //单个逆置
if(p2 != s.end()){ //情况1 p2到了空格
p1 = p2 + 1;
}else{ //情况2 p2到了\0
p1 = p2; //让p1放到p2
}
}
cout << s <<endl;
return 0;
}
排序子序列
链接: