翻转字符串

来源:互联网 发布:大数据零基础培训课程 编辑:程序博客网 时间:2024/05/17 08:26

给定一个字符串,逐个翻转字符串中的每个单词。

您在真实的面试中是否遇到过这个题? 
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);    }};


0 0
原创粉丝点击