LeetCode : 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".

click to show clarification.

 

void reverseWords(string &s) {
        int length=s.size();
       
       if(length==0) return ;
       int pre=0;
       int post=length-1;
       while(pre<post){
       		swap(s[pre],s[post]);
       		++pre;
       		--post;
       }
       int start=0;
       int end=0;
       while(end<length){
       		while(end<length&&s[end]!=' '){
       			end++;
       		}
       		pre=start;
       		post=end-1;
       		while(pre<post){
       			//swap(s[pre],s[post]);
       			char ch=s[pre];
       			s[pre]=s[post];
       			s[post]=ch;
       			++pre;
       			--post;
       		}
       		while(end<length&&s[end]==' '){
       			end++;
       		}
       		start=end;
       }
		int len=s.size();
		int low=0;
		int fast=0;
	
		while(fast<len){
			if(s[fast]!=' '||((fast+1<len)&&s[fast]==' '&&s[fast+1]!=' '&&low!=0)){
				low++;
			}
			fast++;
			s[low]=s[fast];
		}
		s.resize(low,'\0');
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值