题目1283:第一个只出现一次的字符
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1103
解决:631
-
题目描述:
-
在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。
-
输入:
-
输入有多组数据
每一组输入一个字符串。
-
输出:
-
输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。
-
样例输入:
-
ABACCDEFF AA
-
样例输出:
-
1 -1
hash一遍,再从头开始
//1283
#include<cstdio>
#include<cstring>
const int MAX = 10001;
int hash[28];
int
main(void)
{
char str[MAX];
while(~scanf("%s", str))
{
bool found = false;
int len = strlen(str);
memset(hash,0,sizeof(hash));
for(int i=0; i<len; ++i)
{
hash[str[i]-'A']++;
}
for(int i=0; i<len; ++i)
{
if(hash[str[i]-'A']==1)
{
found = true;
printf("%d\n",i);
break;
}
}
if(!found)
printf("-1\n");
}
return 0;
}