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