길이가 같은 두 개의 문자열이 있다고 가정하면 문자를 삭제하지 않고 두 개의 문자열을 아나그램으로 만드는 데 필요한 최소 변경 수를 찾아야 합니다. 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