题解 | #翻转单词序列#

翻转单词序列

https://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3?tpId=265&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3FjudgeStatus%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D13%26type%3D265&difficulty=&judgeStatus=3&tags=&title=&gioEnter=menu

常规实现,不用库函数

class Solution {
  public:
    string ReverseSentence(string str) {
      if (str.empty()) {
        return str;
      }
      
      int left = 0, right = 0;
      
      reverse_str(str, 0, str.size() - 1);
      
      while (right < str.size()) {
        while (right < str.size() && str[right] != ' ') {
          ++right;
        }
        reverse_str(str, left, right - 1);
        left = ++right;
      }
      
      return str;
    }
  private:
    void reverse_str(std::string &str, int left, int right) {
      if (str.empty()) {
        return ;
      }
      
      while (left < right) {
        char tmp = str[left];
        str[left] = str[right];
        str[right] = tmp;
        ++left, --right;
      }
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务