llllmz

导航

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

现在解决一个中等难度的题得要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;
}

结果;

posted on 2024-02-29 14:08  神奇的萝卜丝  阅读(9)  评论(0)    收藏  举报