题目来源:http://ac.jobdu.com/problem.php?pid=1283
-
题目描述:
-
在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。
-
输入:
-
输入有多组数据
每一组输入一个字符串。
-
输出:
-
输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。
-
样例输入:
-
ABACCDEFF AA
-
样例输出:
-
1 -1
#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
const int MAXN = 10010;
int main()
{
int arr[30];
char str[MAXN];
int Len, tmp, i;
while(~scanf("%s", str))
{
getchar();
memset(arr, 0, sizeof(arr));
Len = strlen(str);
for(i = 0; i < Len; ++i)
{
tmp = str[i] - 'A';
arr[tmp]++;
}
i = 0;
for(i = 0; i < Len; ++i)
{
tmp = str[i] - 'A';
if(arr[tmp] == 1)
{
printf("%d\n", i);
break;
}
}
if(i == Len)
printf("-1\n");
str[0] = '\0';
}
return 0;
}