给定一个字符串,逐个翻转字符串中的每个单词。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出s = "the sky is blue",返回"blue is sky the"
说明
- 单词的构成:无空格字母构成一个单词
- 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
- 如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个
class Solution {
public:
/**
* @param s : A string
* @return : A string
*/
string reverseWords(string s) {
// write your code here
int n=s.length();
string res;
if(n==0) return res;
for(int i=n-1;i>=0&&s[i]==' ';i--){
s.erase(s.begin()+i);
}
int newn=s.size();if(newn==0) return res;
for(int i=0;i<newn&&s[i]==' ';i++){
s.erase(s.begin()+i);
}
int newn2=s.length();if(newn==0) return res;
stack<char>tmp;
for(int i=newn2-1;i>=0;i--){
if(s[i]!=' ') tmp.push(s[i]);
else{
while(!tmp.empty()){
res+=(tmp.top());
tmp.pop();
}
res+=" ";
}
if(i==0&&s[i]!=' '){
while(!tmp.empty()){
res+=(tmp.top());
tmp.pop();
}
}
}
return res.substr(0,newn2);
}
};