길이가 같은 두 개의 문자열이 있다고 가정하면 문자를 삭제하지 않고 두 개의 문자열을 아나그램으로 만드는 데 필요한 최소 변경 수를 찾아야 합니다. Anagram은 동일한 문자 집합을 가진 두 개의 문자열입니다. 두 개의 문자열이 "HELLO"이고 "WORLD"가 이 경우 3개의 문자가 다르기 때문에 필요한 변경 수는 3이라고 가정합니다.
아이디어는 간단합니다. 첫 번째 문자열에서 각 문자의 빈도를 찾은 다음 두 번째 문자열을 살펴보고 두 번째 문자열의 문자가 있는 경우 빈도 배열에서 빈도 값을 줄여야 합니다. 빈도 값이 0보다 작으면 최종 카운트를 1 증가시킵니다.
예시
#include <iostream>
using namespace std;
int countAlteration(string str1, string str2) {
int count = 0;
int frequency[26];
for (int i = 0; i < 26; i++){
frequency[i] = 0;
}
for (int i = 0; i < str1.length(); i++)
frequency[str1[i] - 'A']++;
for (int i = 0; i < str2.length(); i++){
frequency[str2[i] - 'A']--;
if (frequency[str2[i] - 'A'] < 0)
count++;
}
return count;
}
int main() {
string s1 = "HELLO", s2 = "WORLD";
cout << "Number of required alteration: " << countAlteration(s1, s2);
} 출력
Number of required alteration: 3