151. 反转字符串中的单词 c

void reversestring(char* s,int head,int tail){
while(head<=tail){
char temp=s[head];
s[head]=s[tail];
s[tail]=temp;
head++;
tail--;
}
}
char* reverseWords(char* s) {
int ns=0;
while(s[ns]!=0) ns++;
if(ns<=1) return s;
int slow=0,fast=0;
char pre='#';
while(fast<ns){
if(s[fast]==' '&&(pre==' '||pre=='#')){
fast++;
}else{
pre=s[fast];
s[slow++]=s[fast++];
}
}
if(s[slow-1]==' ') s[--slow]=0;
for(int i=slow;i<ns;i++) s[i]=0;
reversestring(s,0,slow-1);
int n=slow;
slow=0;
fast=0;
while(fast<n){
if(s[fast]!=' '){
fast++;
if(fast==n){
reversestring(s,slow,fast-1);
break;
}
}else{
reversestring(s,slow,fast-1);
slow=fast+1;
fast++;
}
}
return s;
}
结果:

浙公网安备 33010602011771号