สมมติว่าเรามีสตริง เราต้องหาตัวอักษรตัวแรกที่ซ้ำกัน ดังนั้นถ้าสตริงคือ "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