九度OJ 1283:第一个只出现一次的字符 (计数)
2015-11-14 17:24
260 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1808
解决:997
题目描述:
在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。
输入:
输入有多组数据
每一组输入一个字符串。
输出:
输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。
样例输入:
样例输出:
思路:
对所有大写字母进行计数即可。
只循环一遍的解法我没想出来,我的做法是循环两遍,第一遍计数,第二遍找第一个只出现一次的字符。
代码:
内存限制:32 兆
特殊判题:否
提交:1808
解决:997
题目描述:
在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。
输入:
输入有多组数据
每一组输入一个字符串。
输出:
输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。
样例输入:
ABACCDEFF AA
样例输出:
1 -1
思路:
对所有大写字母进行计数即可。
只循环一遍的解法我没想出来,我的做法是循环两遍,第一遍计数,第二遍找第一个只出现一次的字符。
代码:
#include <stdio.h> #include <string.h> #define M 10000 #define N 26 int main() { int i, min; char s[M+1]; int c , index ; 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); else printf("%d\n", min); } return 0; } /************************************************************** Problem: 1283 User: liangrx06 Language: C Result: Accepted Time:10 ms Memory:912 kb ****************************************************************/
相关文章推荐
- MongoDB小结01 - MongoDB简介
- 九度OJ 1283:第一个只出现一次的字符 (计数)
- 测试准备工作《全程软件测试》
- AS(AndroidStudio)快捷键
- Java Web(2)Hibernate 集成使用
- poj 2393
- cenos7.1 安装openstack kilo 心得之四 安装OpenStack包
- Android开发 设计模式(一、Singleton(单例模式))
- js快速找出数组中的最大值
- IO重定向
- MEF等Ioc框架引起内存泄露-PartCreationPolicy
- 游戏项目中的资源加载管理
- servlet使用json案例,提供jar文件下载
- 个人博客week7
- TS科普10 自适应字段
- 九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)
- 九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)
- [windows]快速从ftp下载最新软件包的批处理脚本
- 4.2.4 Python特有编码
- hdfs之快照的学习