• Reverse Words in a String--not finished yet


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

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

    Update (2015-02-12):
    For C programmers: Try to solve it in-place in O(1) space.

    click to show clarification.

    Clarification:
    • What constitutes a word?
      A sequence of non-space characters constitutes a word.
    • Could the input string contain leading or trailing spaces?
      Yes. However, your reversed string should not contain leading or trailing spaces.
    • How about multiple spaces between two words?
      Reduce them to a single space in the reversed string.
     
    Analyse: For my first thought, I will reverse the string first, then every word in the string has been reversed. Then I find each word, and reverse them. Space complexity is O(1). Time complexity is O(1). 
     1 class Solution {
     2 public:
     3     void reverse(string& s, int start, int end){
     4     if(start >= end) return;
     5     for(int i = start, j = end; i < j; i++, j--)
     6         swap(s[i], s[j]);
     7 }
     8 
     9 
    10 void reverseWords(string& s) {
    11     if(s.size() < 2) return;
    12     
    13     //first inverse the string
    14     //every word has been reversed
    15     reverse(s, 0, s.size() - 1);
    16     
    17     //for each word, reverse the word back
    18     int start = 0;
    19     for(int i = 0; i < s.size(); i++){
    20         while(s[i] != ' ') i++;
    21         if(i >= s.size()) i = s.size();
    22         reverse(s, start, i - 1);
    23         start = i + 1;
    24     }
    25     
    26     for(int i = 0; i < s.size(); i++)
    27         cout<<s[i];
    28     
    29 }
    30 };
  • 相关阅读:
    Docker 部署 Nginx
    Docker 安装 Redis
    linux shell "2>&1"
    定时备份docker mysql
    SpringBoot 中拦截器和过滤器的使用
    SpringBoot WebMvcConfigurer
    springboot自定义参数解析HandlerMethodArgumentResolver
    mysql在linux下查看my.cnf位置的方法
    Linux下设置mysql允许远程连接
    Android项目实战(六十):修改项目包名
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5186926.html
Copyright © 2020-2023  润新知