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

C++에서 두 문자열의 공통 문자 수 계산

<시간/>

str1과 str2라는 두 개의 문자열이 주어지고 작업은 두 문자열에서 공통 문자 수를 찾는 것입니다. 1로 설정하고 str1[i]!=str2[j]이면 쌍으로 간주되지 않고 개수가 1로 증가하지 않습니다.

Input − str1 = “hello”
      str2 = “heoo”
Output − count is: 3

설명 - str1[0] =str2[0] 즉, h; str1[1] =str2[1] 즉, e; str1[2]!=str2[2] 즉, l과 o; str1[3]=str2[3] 즉 o. 따라서 유사한 문자를 가진 쌍은 다른 문자를 포함하는 3 및 1 쌍입니다.

Input − str1 = “point”
      str2 = “print”
Output − count is: 4

설명 - str1[0] =str2[0] 즉, p; str1[1] !=str2[1] 즉 o 및 r; str1[2] =str2[2] 즉, 나는; str1[3]=str2[3] 즉, n; str1[4]=str2[4] 즉 t. 따라서, 유사한 문자를 가진 쌍은 4개 및 다른 문자를 포함하는 1개 쌍입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 두 문자열 str1과 str2를 입력

  • 공백을 포함한 문자열의 문자 수에 따라 정수 값을 반환하는 length() 함수를 사용하여 두 문자열의 크기를 계산합니다.

  • 처음에는 두 문자열의 문자 빈도를 0으로 초기화합니다.

  • 이제 str1의 빈도를 업데이트하기 위해 "f1[str1[i] - 'a']++"를 적용하여 반복할 때마다 빈도를 높이고 str2와 동일한 프로세스를 적용합니다.

  • 쌍의 수를 계산하려면 f1 및 f2에 대해 min() 함수를 적용하십시오.

  • 결과 표시

#include <iostream>
using namespace std;
// Function to count the valid indices pairs
int pairs(string str1, int size1, string str2, int size2){
   // f1 and f2 for frequencies of characters
   // of string str1 and str2
   int f1[26] = { 0 };
   int f2[26] = { 0 };
   // 'c' To count the valid pairs
   int i, c = 0;
   //updating the frequencies of str1 and st2
   for (i = 0; i < size1; i++){
      f1[str1[i] - 'a']++;
   }
   for (i = 0; i < size2; i++){
      f2[str2[i] - 'a']++;
   }
   // Find the count of valid pairs
   for (i = 0; i < 26; i++){
      c += (min(f1[i], f2[i]));
   }
   return c;
}
// main function
int main(){
   string str1 = "tutorialspoint", str2 = "codingground";
   int size1 = str1.length(), size2 = str2.length();
   cout<<”Total pairs with str1[i]=str2[j] are: ”;
   cout << pairs(str1, size1, str2, size2);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -

Total pairs with str1[i]=str2[j] are − 6