题目地址:http://ac.jobdu.com/problem.php?pid=1283
-
题目描述:
-
在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。
-
输入:
-
输入有多组数据
每一组输入一个字符串。
-
输出:
-
输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。
-
样例输入:
-
ABACCDEFF AA
-
样例输出:
-
1 -1
#include <stdio.h>
int main(void){
char str[10001];
int hash[256];
int i;
while (scanf ("%s", str) != EOF){
for (i=0; i<256; ++i)
hash[i] = 0;
i=0;
while (str[i]){
++hash[str[i]];
++i;
}
i = 0;
while (str[i] && hash[str[i]] != 1)
++i;
if (str[i])
printf ("%d\n", i);
else
printf ("-1\n");
}
return 0;
}
参考资料: 何海涛 -- 程序员面试题精选100题(13)-第一个只出现一次的字符[算法]

本文提供了一个字符串处理算法,用于找出字符串中首次出现且仅出现一次的字符,并返回其位置。通过构建哈希表来记录每个字符的出现次数,最终遍历字符串以定位目标字符。
1965

被折叠的 条评论
为什么被折叠?



