1. 程式人生 > >給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

題目描述

給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

輸入描述:

輸入資料有多組,每組佔一行,包含一個句子(句子長度小於1000個字元)

輸出描述:

對於每個測試示例,要求輸出句子中單詞反轉後形成的句子

示例1

輸入

hello xiao mi

輸出

mi xiao hello

/**
思路:
1.先將整個字串轉成字元陣列反轉得到 mi xiao hello
2.遍歷這個字元陣列,遇到空格或者到了尾部再做區域性反轉
*/

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    string s;
    while(getline(cin, s))
    {
        reverse(s.begin(),s.end());
        int l = 0,r = 0;
        while(r < s.length())
        {
            while(r < s.length() && s[r] != ' ')
                ++r;
            reverse(s.begin() + l,s.begin() + r);
            l = ++r;
        }
        cout << s;
    }
    return 0;
}