zoukankan      html  css  js  c++  java
  • [string]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".

    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.
    class Solution {
    public:
        void formatWords(string& s)
        {
            int sSize = s.size();
            int i=0,j=0,k=sSize;
            while(i<sSize && s[i]==' ') i++;
            while(k>=0 && s[k-1]==' ') k--;
            bool isFirstSpace = true;
            while(i<k){
                if(s[i] != ' '){
                    isFirstSpace = true;
                    s[j++] = s[i++];
                    continue;
                }
                if(isFirstSpace){
                    s[j++] = ' ';
                    isFirstSpace = false;
                }
                i++;
            }
            s.erase(s.begin()+j,s.end());
        }
        void reverseStr(string &s,int startPos,int endPos)
        {
            while(startPos<endPos){
                swap(s[startPos++],s[--endPos]);
            }
        }
        void reverseWords(string &s) {
            formatWords(s);
            int sSize = s.size();
            reverseStr(s,0,sSize);
            int i=0,startPos = 0;
            bool isFirstAlph=true;
            for(;i<sSize;i++){
                if(s[i]==' '){
                    reverseStr(s,startPos,i);
                    isFirstAlph = true;
                    continue;
                }
                if(isFirstAlph){
                    startPos = i;
                    isFirstAlph = false;
                }
            }
            reverseStr(s,startPos,i);
        }
    };
  • 相关阅读:
    laravel队列
    php程序内存优化之数组操作优化
    swoole4创建Mysql连接池
    MySQL创建索引
    mysql索引命中规则
    Redis数据类型及使用场景
    Redis高可用集群-哨兵模式(Redis-Sentinel)
    网站架构优化性能
    PHP实现Redis分布式锁
    微软公司面试题
  • 原文地址:https://www.cnblogs.com/zengzy/p/5024096.html
Copyright © 2011-2022 走看看