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

C++에서 문자 삭제 없이 두 개의 문자열 아나그램을 만드는 데 필요한 최소 조작 수

<시간/>

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