现在解决一个中等难度的题得要30min,争取在复试的时候提升到只有15min!!!!
void revesestring(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++;
}
char* return_string=(char*)malloc(sizeof(char)*(ns+1));
for(int i=0;i<=ns;i++) return_string[i]=0;
int nreturn=0;
for(int i=0;i<ns;i++){
if(i==0 && s[i]==' '){
continue;
}
if(s[i]==' '&& i==ns-1){
continue;
}
if(s[i]==' '&&s[i-1]==' '){
continue;
}
return_string[nreturn++]=s[i];
}
if(return_string[nreturn-1]==' ') return_string[--nreturn]=0;
revesestring(return_string,0,nreturn-1);
int head=0;
while(head<nreturn){
int i=head;
while(i<nreturn && return_string[i]!=' '){
i++;
}
revesestring(return_string,head,i-1);
head=i+1;
}
return return_string;
}
结果;