[WikiOI] 1.3.2 单词翻转

来源:互联网 发布:vmware for mac下载 编辑:程序博客网 时间:2024/06/05 11:41

[Problem]

给出一个英语句子,希望你把句子里的单词顺序都翻转过来

[Analysis]

为保证额外的空间开销,在原字符串上处理:首先将整个句子翻转一遍,然后从头到尾遍历一次,翻转每一个单词。

[Solution]

#include <stdio.h>#include <string.h>#define MAX_LEN 10001int main(){    // input data    char str[MAX_LEN];    gets(str);    int len = strlen(str);        // reverse all characters    for(int i = 0; i < len/2; ++i){        char tmp = str[i];        str[i] = str[len-1-i];        str[len-1-i] = tmp;    }        // reverse words    int start = 0, end = 0;    while(end < len){                // filter blanks        while(end < len && str[end] != ' '){            end++;        }                // reverse        if(end > start){            for(int i = 0; i < (end-start)/2; ++i){                char tmp = str[start + i];        str[start + i] = str[end-1-i];        str[end-1-i] = tmp;            }            start = end;        }                // move forward        start++;        while(start < len && str[start] == ' '){        start++;        }        end = start;    }        // output result    printf("%s\n", str);    return 0;}

原创粉丝点击