本文主要是介绍九度OJ 1283:第一个只出现一次的字符 (计数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 题目描述:
-
在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。
- 输入:
-
输入有多组数据
每一组输入一个字符串。
- 输出:
-
输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。
- 样例输入:
-
ABACCDEFF AA
- 样例输出:
-
1 -1
思路:
对所有大写字母进行计数即可。
只循环一遍的解法我没想出来,我的做法是循环两遍,第一遍计数,第二遍找第一个只出现一次的字符。
代码:
#include <stdio.h>
#include <string.h>#define M 10000
#define N 26int main()
{int i, min;char s[M+1];int c[N], index[N];while(scanf("%s", s) != EOF){for (i=0; i<N; i++)c[i] = 0;for (i=0; i<strlen(s); i++){if ( c[s[i]-'A']++ == 0)index[s[i]-'A'] = i;}min = M;for (i=0; i<N; i++){if (c[i] == 1 && index[i] < min)min = index[i];}if (min == M)printf("%d\n", -1);elseprintf("%d\n", min);}return 0;
}
/**************************************************************Problem: 1283User: liangrx06Language: CResult: AcceptedTime:10 msMemory:912 kb
****************************************************************/
这篇关于九度OJ 1283:第一个只出现一次的字符 (计数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!