翻转字符串

来源:互联网 发布:电视直播软件清晰度 编辑:程序博客网 时间:2024/05/16 04:37

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

思路:先翻转整体,再一个单词一个单词的翻转,判断是不是一个单词的末尾,用''  "

代码如下:

class Solution {public:    string ReverseSentence(string str) {        string result;        int len = str.size();        if(len < 1)            return result;        int begin = 0;        std::reverse(str.begin(),str.end());        for(int i = 0; i < len; i++){            if(str[i] == ' '){                std::reverse(str.begin() + begin, str.begin() + i);//注意reverse函数的区间为左闭右开                begin = i + 1;            }        }        if(begin < len)//翻转最后一个单词        std::reverse(str.begin() + begin, str.end());        return str;            }};


原创粉丝点击