【问题描述】
给出一个字符串,请将其每个单词反转后输出。
【输入形式】
输入第一行为一个正整数N,表示测试用例数,接下来的N行,每行一个字符串。
【输出形式】
输出N行,每行对应一个反转后的字符串。
【样例输入】
3
olleh !dlrow
m'I morf .unh
I ekil .tae
【样例输出】
hello world!
I'm from hnu.
I like eat.
题解
思路
- 1.第一步我们要拿到每个单词,我们用到sstream,这个很方便
- 2.反转直接用了reverse函数
- 注意:这里有一个样例超时,注意看一下cin,cout的提速代码,这个每次都可以使用的!
代码
#include<iostream>
#include<string>
#include<sstream>
#include<algorithm>
using namespace std;
int main(){
/***************有一个样例超时,我们给cin,cout提速*************************/
ios::sync_with_stdio(false);
cout.tie(NULL);
/***************************************************************************/
int n;
cin>>n;
cin.ignore();//忽略换行符
while(n--){
stringstream ss;//如果放到外面,每次一定要clear
string s;
getline(cin,s);
ss.str(s);
string temp;
while(ss>>temp){//通过sstream省略了手动切割字符的过程
reverse(temp.begin(),temp.end());//algorithm自带的反转,自己手写也很简单,这里不写了
cout<<temp<<" ";
}
cout<<endl;
}
return 0;
}