#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int FindChar(char* pInputString, char* pChar);
int main()
{
char str[1025];
char c;
int r;
while(gets(str))
{
r=FindChar(str,&c);
if(r==-1)
{
printf(".\n");
continue;
}
printf("%c\n",c);
}
return 0;
}
int FindChar(char* pInputString, char* pChar)
{
int a[1025]={0};
int flag=-1;
int len=strlen(pInputString);
int i,j;
for(i=0;i<len-1;i++)
{
if(a[i]==1)
continue;
for(j=i+1;j<len;j++)
{
if(pInputString[i]==pInputString[j])
a[i]=a[j]=1;
}
if(a[i]==0)
{
*pChar=pInputString[i];
flag=1;
break;
}
}
if(flag==-1&&a[len-1]==0)
{
*pChar=pInputString[len-1];
flag=1;
}
return flag;
}
/*不知道错哪里了!!!提交不了
int FindChar(char* pInputString, char* pChar)
{
int a[1025]={0};
int len,l;
int t=-1;
pChar=pInputString;
char *p;
while(*pChar!='\0') //while(pChar)这样写是错误的,,为什么?
{
p=pChar+1;
len=pChar-pInputString;
if(a[len]==1)
{
pChar++;
continue;
}
while(*p!='\0') //while(p)这样写是错误的,,为什么?
{
if(*p==*pChar)
{
l=p-pInputString;
a[l]=1;
a[len]=1;
}
p++;
}
if(a[len]==0)
{
t=len;
break;
}
pChar++;
}
return t;
}
*/
/*
//算法思想错误,惭愧啊!虽然追求新颖的算法,但是,,实力不行出错是灾难性的!!!
int FindChar(char* pInputString, char* pChar)
{
int i,a[256],flag[256],len;
for(i=0;i<256;++i)
flag[i]=a[i]=0;
len=strlen(pInputString);
for(i=0;i<len;i++)
{
++a[(int)pInputString[i]];
flag[(int)pInputString[i]]=i;
}
for(i=0;i<256;++i)
{
if(a[i]==1)
{
*pChar=*(pInputString+flag[i]);
return 1;
}
}
return 0;
}
*/
这道题目花费了好长时间,,真是……
之前用C++,,还是发现自己字符和字符串在C++中还是没有搞清楚,后来换纯C字符串来做,,调式没有问题,但是提交不了。。最后只有用最简单的方法来解决。数组……