翻轉字串裡的單詞
阿新 • • 發佈:2018-12-16
題目
給定一個字串,逐個翻轉字串中的每個單詞。
示例:
輸入: “the sky is blue”,
輸出: “blue is sky the”.
說明:
無空格字元構成一個單詞。
輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。
如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
進階: 請選用C語言的使用者嘗試使用 O(1) 空間複雜度的原地解法。
解決方案
- 字串分割,以空格劃分為每個單詞
- 使用向量陣列儲存每個單詞
- 倒序將向量陣列中的單詞重新組成字串
**注意:**輸出最後一個單詞是要去掉空格。
程式碼
// // 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; }