題目
給定一個字符串,你需要反轉字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。
示例 1:
輸入: “Let’s take LeetCode contest”
輸出: “s’teL ekat edoCteeL tsetnoc”
**注意:**在字符串中,每個單詞由單個空格分隔,並且字符串中不會有任何額外的空格。
思路
用將單詞放入棧的方式,如果沒有到字符串末尾,那麼空格是一個單詞結束的標誌,如果到了最後一個單詞,就判斷是否爲字符串末尾,類似於字符串反轉。
運行成功的代碼
class Solution {
public:
string reverseWords(string s) {
stack<char> S;
int i;
int j;
int k;
k=i=0;
//k用於記錄每個單詞的開始位置
for(i=0;i<s.length()+1;i++)
{
if(s[i]!=' '&&i!=s.length())
{
S.push(s[i]);
}
else
{
for(j=k;j<i;j++)
{
s[j]=S.top();
S.pop();
}
k=i+1;
//這裏是記錄下一個單詞的初始位置
}
}
return s;
}
};
運行結果