zoukankan      html  css  js  c++  java
  • 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目

    题目地址:http://ac.jobdu.com/problem.php?pid=1525

    题目描述:

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

    输入:

    输入包含多个测试用例,每个测试用例的第一行是一个正整数 n,1=<n<=100000,代表卡片上字符串的长度。第二行输入长度为n的字符串(字符串仅包含小写字母和空格)。当n为0时,代表输入结束。

    输出:

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

    样例输入:
    3
    abc
    13
    abc   efg hij
    样例输出:
    cba
    cba gfe jih
    来源:
    2012年Google校园招聘笔试题目
    #include <stdio.h>
     
    #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<n; ++i){
                if (str[i] != ' '){
                    start = i;
                    while (++i < n && str[i] != ' ')
                        continue;
                    end = i - 1;
                    Reverse (str, start, end);
                }
            }
            puts (str);
        }
     
        return 0;
    }
    


  • 相关阅读:
    在Dictionary使用foreach的注意
    [公告]新增项目交流区
    博客园Blog程序中又一个奇怪问题
    公告
    网络爬客光顾博客园
    爬网的影响
    致歉
    [业界新闻]中文IT百科Beta版于2006年7月10日正式上线
    公告
    疯狂的爬网
  • 原文地址:https://www.cnblogs.com/liushaobo/p/4373816.html
Copyright © 2011-2022 走看看