码迷,mamicode.com
首页 > 其他好文 > 详细

Reverse Words in a String

时间:2016-04-28 20:09:12      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

注意题目的特殊要求:

最后结果前后不能有空格,每个单词之间的空格只能有一个。

void reverse_one_word(string &s, int begin, int end)
    {
        while(begin<end)
        {
            char temp=s[begin];
            s[begin++]=s[end];
            s[end--]=temp;
        }
        
    }
    void reverseWords(string &s) {
        int i=0;
        int j=0;
        int word=0;
        
        while(true)
        {
            while(i<s.size()&&s[i]== )
                i++;
            if(i==s.size())
                break;
            if(word)
                s[j++]= ;
            int l=j;
            while(i<s.size()&&s[i]!= )
                s[j++]=s[i++];
            reverse_one_word(s,l,j-1);
            word++;
            
        }
        
        s.resize(j);
        reverse_one_word(s,0,j-1);
        
    }

这里使用了string类的resize函数,将s变为长度为j的字符串。

这种方法没有申请新的空间,相当于原地重新构建字符串,通过i来不断寻找下一个单词的位置。

Reverse Words in a String

标签:

原文地址:http://www.cnblogs.com/summerkiki/p/5443805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!