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

C++에서 두 문자열의 공통 문자를 알파벳순으로 인쇄

<시간/>

이 프로그래밍 문제에서는 두 개의 문자열이 제공됩니다. 그리고 두 문자열에서 공통적인 문자열의 모든 문자를 찾아야 하고 이 공통 문자를 알파벳 순서로 인쇄해야 합니다. . 그리고 공통 문자가 나오지 않으면 'NO COMMON CHARACTERS '를 인쇄하십시오. 문자열에 모든 소문자 알파벳이 포함되어 있지는 않습니다.

예를 들어 보겠습니다 -

Input : string1 : adsfhslf
   string2 : fsrakf
Output : affs

설명 - 두 문자열 사이에는 a, f, s가 있습니다. 따라서 사전식 출력은 'afs'입니다.

Input : string1 : abcde
   string2 : glhyte
Output : No common characters

설명 − 공통점이 없는 캐릭터입니다.

이 문제를 해결하려면 문자열에서 공통 문자를 찾아야 합니다. 그리고 출력은 이 문자열의 사전순입니다.

알고리즘

이 문제를 풀기 위한 알고리즘은 -

Step 1 : Create two arrays a1[] and a2[] of size 26 each for counting the number of alphabets in the strings string1 and string2.
Step 2 : traverse a1[] and a2[]. and in sequence print all those numbers that have values in the array.

예시

작업을 설명하기 위해 이 알고리즘을 기반으로 하는 프로그램을 만들어 보겠습니다.

#include<bits/stdc++.h>
using namespace std;
int main(){
   string string1 = "adjfrdggs";
   string string2 = "gktressd";
   cout<<"The strings are "<<string1<<" and "<<string2;
   cout<<"\nThe common characters are : ";
   int a1[26] = {0};
   int a2[26] = {0};
   int i , j;
   char ch;
   char ch1 = 'a';
   int k = (int)ch1, m;
   for(i = 0 ; i < string1.length() ; i++){
      a1[(int)string1[i] - k]++;
   }
   for(i = 0 ; i < string2.length() ; i++){
      a2[(int)string2[i] - k]++;
   }
   for(i = 0 ; i < 26 ; i++){
      if (a1[i] != 0 and a2[i] != 0){
         for(j = 0 ; j < min(a1[i] , a2[i]) ; j++){
            m = k + i;
            ch = (char)(k + i);
            cout << ch;
         }
      }
   }
   return 0;
}

출력

The strings are adjfrdggs and gktressd
The common characters are : dgrs