题目背景
众所周知,影子并不是实际物体。
题目描述
给出多个字符串(数目未知),每行一个。
其中有可能会有重复的字符串,而我们认为在这些字符串中,较靠后出现的都是靠前出现的字符串的“影子”。
例如,
abc
def
abc
abc
abc
我们在第 1,3,4,51,3,4,5 行都出现了字符串 abc
,那么 3,4,53,4,5 行的字符串会被称为“影子字符串”。
现在要求把所有的非影子字符串都按照行号从小到大依次拼接为一个长串并输出。
输入格式
多个字符串,每行一个,含义见题目描述。
注意:输入结尾以字符串 0
结束(即一行里仅有一个 0
)。
输出格式
共一行,表示所有非影子字符串按照行号从小到大依次拼接成的一个长串。
输入输出样例
输入
cc b a cc 0
输出
ccba
说明/提示
对于 20% 的数据,无重复字符串。
对于 100% 的数据,1≤n≤500,字符串总长度不超过
50000 ,字符集为全部的小写字母、数字、 .
、!
和 &
。
也就是说,每个字符串中只包含小写字母、数字、 .
、!
和 &
,不包含空格等特殊符号。
应该边输入边判断。
#include<stdio.h>
#include<string.h>
int main() {
char s[510][110];
int n=0; //n代表字符串个数
scanf("% s", s[n]);
n = 1;
int i;
while ((int)*s[n - 1] - '0' != 0) {
int flag = 1;
for (i = 0; i < n - 1; i++) {
if (strcmp(s[i], s[n - 1]) == 0) {
flag = 0;
break;
}
}
if (flag)
printf("%s", s[n-1]);
scanf("%s", s[n++]);
}
}