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

    思路:

    本题的思路是每一次在s里面把字符串倒过来,这里是自己写一个倒转的程序。我在自己写的时候发现如果连续出现空格的问题,后来发现有一个连续判断,再额外设置一个变量的方法。在最后记得倒转整个s字符串。

    另外记得里面一定判断下i是否在整个数组长度之内。


    代码:

    class Solution {
    public:
        void reverseWords(string &s) {
            if(s.empty())   return;
            int i=0,k=0;
            while(s[i]==' '&&i<s.length()){
                i++;
            }
            //i此时不为空
            while(i<s.length()){
                int start=k;
                while(s[i]!=' '&&i<s.length()){
                    s[k++]=s[i++];
                }//此时i空
                if(k>start+1){
                    reverseSubWord( s, start,k-1);
                }
                
                while(s[i]==' '&&i<s.length()){
                    i++;
                }
                if(i<s.length())    s[k++]=' ';//一开始是这个地方没有设置,如果i到了最后,就不要设置空格
            }
            
            if(k<s.length()){
                s.erase(s.begin()+k,s.end());
            }
            
            if(k >1) reverseSubWord( s, 0,k-1) ;
        }
        
        void reverseSubWord(string &s,int start,int end){
            while(start<=end){
                swap(s[start],s[end]);
                start++;end--;
            }
        }
        
    };


  • 相关阅读:
    10-JS的函数学习
    Servlet(生命周期)
    09-js数组常用方法
    08-计算器案例
    07-js数组
    06-js的逻辑结构
    使用css设置三角形
    关于background-size 的一点小坑
    a 标签实现分享功能
    关于页面缩放时css错乱的处理方法---之一
  • 原文地址:https://www.cnblogs.com/jsrgfjz/p/8519860.html
Copyright © 2011-2022 走看看