Alice bought a lot of pairs of socks yesterday. But when she went home, she found that she has lost one of them. Each sock has a name which contains exactly 7 charaters.
Alice wants to know which sock she has lost. Maybe you can help her.
There are multiple cases. The first line containing an integer n (1 <= n <= 1000000) indicates that Alice bought n pairs of socks. For the following 2*n-1 lines, each line is a string with 7 charaters indicating the name of the socks that Alice took back.
The name of the lost sock.
2 aabcdef bzyxwvu bzyxwvu 4 aqwerty eas fgh aqwerty easdfgh easdfgh aqwerty aqwerty 2 0x0abcd 0ABCDEF 0x0abcd
aabcdef eas fgh 0ABCDEF
Because of HUGE input, scanf is recommended.
题意:
找出那个没有一模一样的字符串
思路:
因为字符串长度固定为7,我们把每一位的字符出现情况都用一个数组来记录出现了就++,然后遍历每一位的数组,遍历数组,出现了奇数次的那个字符就是要求的字符,然后循环7次就求出来了
代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<stdio.h>
#include<math.h>
#include<string>
#include<stdio.h>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<deque>
using namespace std;
#define lson k*2
#define rson k*2+1
#define M (t[k].l+t[k].r)/2
#define INF 1008611111
int a[8][1005];//情况数组,因为ASCII码没那么大就开1000够了
int main()
{
char s[10];
int i,j,n,m;
while(scanf("%d",&n)!=EOF)
{
getchar();
memset(a,0,sizeof(a));
for(i=0;i<2*n-1;i++)
{
gets(s);
for(j=0;j<7;j++)
{
a[j][s[j]]++;
}
}
for(i=0;i<7;i++)
{
for(j=0;j<1000;j++)
{
if(a[i][j]%2)//找到奇数的就输出
{
printf("%c",j);
break;
}
}
}
printf("\n");
}
return 0;
}