LeetCode之ReverseWorldString,leetcode
題目:將一個英文句子翻轉,比如: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();
}
}
};