首个重复字符
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时返回。