zoukankan      html  css  js  c++  java
  • Leetcode OJ: Reverse Words in a String

    Given an input string, reverse the string word by word.

    For example,
    Given s = "the sky is blue",
    return "blue is sky the".

    单词反转,思路就是单词反转后再整句反转,只是加了一些要求,首尾的空格不能要,中间出现连续的空格都变成一个。

     1 class Solution {
     2 public:
     3     void reverseAll(string &s, int i, int j) {
     4         while(i < j) {
     5             if (s[i] != s[j])
     6                 swap(s[i++], s[j--]);
     7             else {
     8                 i++;
     9                 j--;
    10             }
    11         }
    12     }
    13     void reverseWords(string &s) {
    14         size_t len = s.size();
    15         int pre = 0;
    16         int i = 0;
    17         // 清除开头的空格
    18         while (i < len && s[i] == ' ')
    19             i++;
    20         int begin = i++;
    21         int k = 0;
    22         // 把中间的空格合并
    23         while (i < len) {
    24             if (s[i - 1] == ' ' && s[i] == ' ') {
    25                 k++;
    26             }else if (k > 0) {
    27                 s[i - k] = s[i];
    28             }
    29             ++i;
    30         }
    31         len -= k;
    32         // 清除结尾的空格
    33         while (len > begin && s[len - 1] == ' ')
    34             len--;
    35         pre = begin;
    36         
    37         // 反转单词
    38         for (i = begin; i < len; ++i) {
    39             if (s[i] == ' ') {
    40                 if (i - 1 > pre)
    41                     reverseAll(s, pre, i - 1);
    42                 pre = i + 1;
    43             }
    44         }
    45         
    46         // 反转最后一个单词
    47         if (pre < len - 1)
    48             reverseAll(s, pre, len - 1);
    49         
    50         // 反转整句
    51         reverseAll(s, begin, len - 1);
    52         if (len < s.size())
    53             s.erase(len);
    54         if (begin > 0)
    55             s.erase(0, begin);
    56         
    57     }
    58 };
     
  • 相关阅读:
    go module配置
    beego conf配置文件
    go string类型的特性
    go语言简单介绍,增强了解
    beego项目和go项目 打包部署到linux
    第一个go程序
    linux下vim编辑器查找 关键字
    配置ngnix下的虚拟主机
    PHP中文无乱码截取
    #1040
  • 原文地址:https://www.cnblogs.com/flowerkzj/p/3616531.html
Copyright © 2011-2022 走看看