LeetCode 557:反轉字串中的單詞 III
給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。
Input格式:
輸入: "Let's take LeetCode contest"
輸出: "s'teL ekat edoCteeL tsetnoc"
注意:在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。
個人思路:
反轉字串問題,將字串反轉輸出,可以從棧(先進後出)的方向來思考,對於此題同樣很適合,按照題目要求,每個單詞反轉之後仍按照之前的順序排列,所以我們可以先對字串進行遍歷,在S[i] != ' '的情況下,壓進棧,當S[i] == ' '時,通過while,我們可以設定一個空字串接收彈出的字元,並在後面加上此處的S[i]為空格,由於最後一個單詞後無空格字元,所以在遍歷完成之後,棧記憶體有最後一個單詞,再將其彈出即可
程式碼:
class Solution {
public:
string reverseWords(string s) {
stack<char> sk;
string ss = "";
if(s.size() == 0){
return s;
}
if(s == " "){
return s;
}
for(int i=0;i<s.size();i++){
if(s[i] != ' '){
sk.push(s[i]);
}
if(s[i] == ' '){
while(sk.empty() == false){
ss += sk.top();
sk.pop();
}
ss += s[i];
}
}
while(sk.empty() == false){
ss += sk.top();
sk.pop();
}
return ss;
}
};
//水平不高(水水題),各位多包涵,有更好想法可以互相交流