Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm ký tự lặp lại có mặt đầu tiên trong một chuỗi trong C ++

Giả sử chúng ta có một chuỗi; chúng ta phải tìm ký tự đầu tiên được lặp lại. Chuỗi “Hello Friends” cũng vậy, ký tự được lặp lại đầu tiên sẽ là l. Vì có hai cái nối tiếp nhau.

Để giải quyết điều này, chúng tôi sẽ sử dụng kỹ thuật băm. Tạo một bảng băm, quét từng ký tự một, nếu ký tự không có thì chèn vào bảng băm, nếu đã có thì trả về ký tự đó.

Ví dụ

#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);
}

Đầu ra

First repeating character is: l