首个重复字符(去哪儿2016校招)

来源:互联网 发布:远程图像传输java 编辑:程序博客网 时间:2024/04/29 07:25

首个重复字符


1、题目:
对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。
给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。

测试样例:
“qywyer23tdd”,11

返回:y


2、代码:

#include <iostream>#include <string>using namespace std;char findFirstRepeat(string A, int n){    int a[128] = {};    for (int i = 0;i < n;++i)    {        if (a[A[i]] != 0)        {            return A[i];        }        else        {            ++a[A[i]];        }    }    return -1;}int main(){    string str;    cin >> str;    int n;    cin >> n;    cout << findFirstRepeat(str, n) << endl;    system("pause");    return 0;}

3、结果:
这里写图片描述

4、总结:
ASCII码表128个,申请哈希表数组a[128],初始化为0,以ASCII码为索引,当发现有某个值已经为1时返回。

0 0
原创粉丝点击