给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
思路:
利用reverse()进行反转,然后遍历字符串str,遇到空格之后再次进行反转,使用pos记录开始的位置;最后一个单词由于没有空格所以单独处理。
问题:
输入字符串不完整
解决:
cin>>str; 改为 getline(cin,str);前者遇到空格结束输入,后者遇到回车结输入。
1 #include <iostream> 2 #include <string> 3 #include <algorithm> 4 using namespace std; 5 int main() { 6 string str; 7 getline(cin, str);//在输入回车时结束 8 reverse(str.begin(),str.end());//对容器或者string类型进行反转 9 int pos = 0; 10 for (int i = 0; i < str.length(); i++) { 11 if (str[i] == ' ') { 12 reverse(str.begin() + pos, str.begin() + i); 13 pos = i + 1; 14 } 15 } 16 //对最后一个单词单独处理 17 reverse(str.begin() + pos, str.end()); 18 cout << str; 19 }