llllmz

导航

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;
}

结果:

posted on 2024-03-01 14:23  神奇的萝卜丝  阅读(11)  评论(0)    收藏  举报