Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.
Example 1:
Input: "Let's take LeetCode contest" Output: "s'teL ekat edoCteeL tsetnoc"
Note: In the string, each word is separated by single space and there will not be any extra space in the string.
这道题是倒序输出字符串中单词,题目难度为Easy。
题目比较简单,遍历字符串,每遇到一个空格表明当前单词已结束,倒序该单词即可,具体代码:
class Solution {
public:
string reverseWords(string s) {
string::iterator pos = s.begin();
for(auto it = s.begin(); it != s.end(); ++it) {
if(*it == ' ') {
reverse(pos, it);
pos = it + 1;
}
}
reverse(pos, s.end());
return s;
}
};
还可以用栈来协助倒序,将单词每个字符存入栈中,遇到空格依次出栈即可得到倒序后的单词,具体代码:
class Solution {
public:
string reverseWords(string s) {
stack<char> stk;
string ret = "";
for(auto c:s) {
if(c == ' ') {
while(!stk.empty()) {
ret += stk.top();
stk.pop();
}
ret += " ";
}
else stk.push(c);
}
while(!stk.empty()) {
ret += stk.top();
stk.pop();
}
return ret;
}
};