Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 문자열의 첫 번째 반복 문자 찾기

<시간/>

문자열이 있다고 가정합니다. 반복되는 첫 번째 문자를 찾아야 합니다. 문자열이 "Hello Friends"인 경우 첫 번째 반복 문자는 l이 됩니다. l이 차례로 두 개 있기 때문입니다.

이를 해결하기 위해 해싱 기법을 사용합니다. 하나의 해시 테이블을 만들고 각 문자를 하나씩 스캔하고 문자가 없으면 해시 테이블에 삽입하고 이미 있으면 해당 문자를 반환합니다.

예시

#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