题目1525:子串逆序打印
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:2404
解决:388
-
题目描写:
-
小明手中有很多字符串卡片,每一个字符串中都包括有多个连续的空格,而且这些卡片在印刷的进程中将字符串的每一个子串都打印反了,现在麻烦你帮小明将这些字符串中的子串修正过来,同时为了使卡片美观,紧缩其中的连续空格为1个。
-
输入:
-
输入包括多个测试用例,每一个测试用例的第1行是1个正整数 n,1=<n<=100000,代表卡片上字符串的长度。第2行输入长度为n的字符串(字符串仅包括小写字母和空格)。当n为0时,代表输入结束。
-
输出:
-
对应每一个测试用例,请依照要求输出修正过的字符串。
-
样例输入:
-
3
abc
13
abc efg hij
-
样例输出:
-
cba
cba gfe jih
-
来源:
- 2012年Google校园招聘笔试题目
#include <stdio.h>
#include<string.h>
#define MAX 100000+10
char s[MAX];
char tmp[MAX];
int main() {
int n;
while(~scanf("%d",&n))
{
if(n==0)return 0;
while(getchar()!='
')
;
gets(s);
int len=strlen(s);
int i=0;
while(i<len)
{
int j=0;
while(i<len&&s[i]==' ')
{
i++;
j++;
}
if(j>0)
printf(" ");
j=0;
while(i<len&&s[i]!=' ')
{
tmp[j++]=s[i];
i++;
}
if(j>0)
{
for(int p=0,q=j⑴;p<q;++p,--q)
{
char t=tmp[p];
tmp[p]=tmp[q];
tmp[q]=t;
}
tmp[j]='