Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các ký tự chung trong hai chuỗi trong C ++

Chúng tôi được cung cấp với hai chuỗi, giả sử str1 và str2 và nhiệm vụ là tìm số lượng các ký tự chung trong hai chuỗi, tức là nếu str1 [i] =str [j], thì chúng sẽ được coi là một cặp và số lượng sẽ tăng lên thành 1 và nếu str1 [i]! =str2 [j] thì chúng sẽ không được coi là một cặp và số lượng sẽ không tăng lên 1.

Ví dụ

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

Giải thích - str1 [0] =str2 [0] tức là h; str1 [1] =str2 [1] tức là e; str1 [2]! =str2 [2] tức là l và o; str1 [3] =str2 [3] tức là o. Vì vậy, các cặp có các chữ cái giống nhau là 3 và 1 cặp chứa các chữ cái khác nhau.

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

Giải thích - str1 [0] =str2 [0] tức là p; str1 [1]! =str2 [1] tức là o và r; str1 [2] =str2 [2] tức là tôi; str1 [3] =str2 [3] tức là n; str1 [4] =str2 [4] tức là t. Vì vậy, các cặp có các chữ cái giống nhau là 4 và 1 cặp chứa các chữ cái khác nhau.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập hai chuỗi str1 và str2

  • Tính toán kích thước của cả hai chuỗi bằng cách sử dụng hàm length () sẽ trả về một giá trị nguyên theo số chữ cái trong chuỗi bao gồm cả khoảng trắng.

  • Ban đầu, Khởi tạo tần số của các ký tự trong cả chuỗi bằng 0.

  • Bây giờ, để cập nhật tần số của str1, hãy áp dụng “f1 [str1 [i] - 'a'] ++” sẽ tăng tần suất với mỗi lần lặp và áp dụng quy trình tương tự với str2

  • Để tính toán số lượng các cặp, hãy áp dụng hàm min () cho f1 và f2.

  • Hiển thị kết quả

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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