1. 程式人生 > >翻轉字串裡的單詞

翻轉字串裡的單詞

題目

給定一個字串,逐個翻轉字串中的每個單詞。

示例:

輸入: “the sky is blue”,
輸出: “blue is sky the”.
說明:

無空格字元構成一個單詞。
輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。
如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
進階: 請選用C語言的使用者嘗試使用 O(1) 空間複雜度的原地解法。

解決方案

  1. 字串分割,以空格劃分為每個單詞
  2. 使用向量陣列儲存每個單詞
  3. 倒序將向量陣列中的單詞重新組成字串
    **注意:**輸出最後一個單詞是要去掉空格。

程式碼

//
// Created by HINTS on 2018/12/6.
//
#include <iostream>
#include <string>
#include <vector>
#include <sstream>

using namespace std;

void reverseWords(string &s){
    istringstream in(s);
     s = "";
    vector<string> v;

    string t;
    while(in >> t){
        v.push_back(t);
    }

    for(int i = v.size()-1; i >= 0; i--){

        if(i > 0){
            s += v[i] + " ";
        }else{
            s += v[i];
        }
    }

}

int main(){
    string str = "the sky is blue";
    reverseWords(str);
    cout<<str<<endl;
    return 0;
}