1. 程式人生 > >首個重複字元(去哪兒2016校招)

首個重複字元(去哪兒2016校招)

首個重複字元

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時返回。