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 };
     
  • 相关阅读:
    kubernetes---Init-Container
    kubernetes---affinity--taint
    kubernetes---pod调度
    kubernetes---项目部署
    StatefulSet
    kubernetes---存储--PV--PVC
    pod-pod控制器-service-ingress
    jenkins
    django中的验证码
    django中的缓存
  • 原文地址:https://www.cnblogs.com/flowerkzj/p/3616531.html
Copyright © 2011-2022 走看看