สมมติว่ามีสตริง เราต้องหาตัวอักษรแรกที่ซ้ำกัน ดังนั้นถ้าสตริงคือ "Hello Friends" ตัวอักษรซ้ำแรกจะเป็น l เนื่องจากมี l สองตัวติดกัน
เพื่อแก้ปัญหานี้ เราจะใช้เทคนิคการแฮช (Hashing) สร้างตารางแฮชหนึ่ง สแกนตัวอักษรแต่ละตัวทีละตัว หากตัวอักษรไม่มีอยู่ ให้แทรกลงในตารางแฮช หากมีอยู่แล้ว ให้คืนค่าตัวอักษรนั้น
ตัวอย่าง
#include <iostream>
#include <unordered_set>
using namespace std;
char getFirstRepeatingChar(string &s) {
unordered_set<char> hash;
for (int i = 0; i < s.length(); i++) {
char c = s[i];
if (hash.find(c) != hash.end())
return c;
else
hash.insert(c);
}
return '\0';
}
int main() {
string str = "Hello Friends";
cout << "First repeating character is: " << getFirstRepeatingChar(str);
}
ผลลัพธ์
First repeating character is: l