Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาตัวอักษรซ้ำที่ปรากฏแรกในสตริงใน C++

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