第一个只出现一次的字符

来源:互联网 发布:阿里云客服报名关闭 编辑:程序博客网 时间:2024/05/16 11:06

题目描述:

在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。

输入:

输入有多组数据
每一组输入一个字符串。

输出:

输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。

样例输入:
ABACCDEFFAA
样例输出:
1-1

AC代码:

#include<stdio.h>#include<string.h> int main() {    int i;    char s[10001];    while(scanf("%s", s) != EOF) {        int len = strlen(s);        int map[26] = {0}; //用哈希映射        for(i = 0; i < len; i++) {            map[s[i]-'A']++;//通过对字符减'A'把下标转换成int型            //printf("i:%d, map[%d]:%d\n", i, s[i]-'A',map[s[i]-'A']);        }        //从头再扫描一遍字符串,就能保证找到第一个只出现一次的字符(如果有的话)        for(i = 0; i < len; i++) {            if(map[s[i]-'A'] == 1) {                break;            }        }        if(i != len) {            printf("%d\n", i);        }        else {            printf("%d\n", -1);        }    }    return 0;} /**************************************************************    Problem: 1283    User: wusuopuBUPT    Language: C    Result: Accepted    Time:20 ms    Memory:912 kb****************************************************************/


0 0
原创粉丝点击