두 개의 문자열 S와 T가 있고 S의 길이가 n이고 T의 길이가 n + 1이라고 가정합니다. T는 S에 있는 모든 문자를 보유하지만 하나의 추가 문자를 보유합니다. 우리의 임무는 효율적인 접근 방식을 사용하여 추가 캐릭터를 찾는 것입니다.
이 문제를 해결하기 위해 우리는 하나의 빈 해시 테이블을 취하고 두 번째 문자열의 모든 문자를 삽입한 다음 첫 번째 문자열에서 각 문자를 제거하고 나머지 문자는 추가 문자입니다.
예
#include<iostream>
#include<unordered_map>
using namespace std;
char getExtraCharacter(string S, string T) {
unordered_map<char, int> char_map;
for (int i = 0; i < T.length(); i++)
char_map[T[i]]++;
for (int i = 0; i < S.length(); i++)
char_map[S[i]]--;
for (auto item = char_map.begin(); item != char_map.end(); item++) {
if (item->second == 1)
return item->first;
}
}
int main() {
string S = "PQRST";
string T = "TUQPRS";
cout << "Extra character: " << getExtraCharacter(S, T);
} 출력
Extra character: U