題目:將一個英文句子翻轉,比如:the sky is blue 翻轉後變為:blue is sky the
分析:我的實現方法是,利用棧將單詞存儲起來,然後再順序拿出來,單詞進棧還需注意添加空格。
主要代碼:
class Solution {
public: void reverseWords(string &s) { stack<string> mStack; string mString = ""; bool flag = false;//false 表示遇到空格,true表示正在讀一個單詞 int mStringLength = s.length(); for (int i=0;i<mStringLength;++i) { //獲取一個單詞 if (s[i] != ' ') { flag = true; mString += s[i]; } //將一個單詞入棧 if ((s[i] == ' ' || i == mStringLength-1) && flag == true) { mStack.push(mString); flag = false; mString = ""; mStack.push(" "); } } mStack.pop();//將最後一個空格丟掉 //將s中的單詞反置 s.clear(); while(!mStack.empty()) { s.append(mStack.top()); //s += mStack.top(); mStack.pop(); } } };