九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目

2014-11-24 09:05:40 · 作者: · 浏览: 0

题目描述:

小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串的每个子串都打印反了,现在麻烦你帮小明将这些字符串中的子串修正过来,同时为了使卡片美观,压缩其中的连续空格为1个。

输入:

输入包含多个测试用例,每个测试用例的第一行是一个正整数 n,1= 输出:

对应每个测试用例,请按照要求输出修正过的字符串。

样例输入:
3
abc
13
abc   efg hij
样例输出:
cba
cba gfe jih
来源:
2012年Google校园招聘笔试题目
#include 
    
     
 
#define MAX 100001
 
int Delete_Blank (char str[], int n){
    int i, j;
    int flag;
    int cnt;
 
    cnt = 0;
    i=0;
    j=0;
    while (i < n){
        str[j] = str[i];
        if (str[i] == ' '){
            while (str[++i] == ' ')
                continue;
            ++j;
            str[j] = str[i];
        }
        else{
            ++i;
            ++j;
        }
    }
    str[j] = '';
    return j;
}
 
void Reverse (char str[], int start, int end){
    char tmp;
    while (start < end){
        tmp = str[start];
        str[start] = str[end];
        str[end] = tmp;
        ++start;
        --end;
    }
}
 
int main(void){
    char str[MAX];
    int n;
    int i;
    int start, end;
 
    while (scanf (%d, &n) != EOF){
        while (getchar () != '
')
            continue;
        gets (str);
        n = Delete_Blank (str, n);
        for (i=0; i