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

C++에서 발생 순서대로 문자와 빈도를 인쇄합니다.


이 문제는 소문자 문자열이 제공됩니다. 문자열에서 발생하는 각 문자의 빈도를 찾아야 합니다. 문제에 대해 자세히 설명할 때 아래의 예를 참조하세요.

Input : “jskdk”
Output :
j 1
s 1
k 2
d 1

설명 - 문자열에서 문자 j, s, d는 한 번 발생하고 k는 두 번 발생합니다. 따라서 인쇄된 출력은 위의 결과를 제공합니다.

이제 이 문제를 해결하기 위한 논리를 만들어 보겠습니다. 언급한 바와 같이 문자열에서 각 문자의 발생 빈도를 찾아야 합니다. 한 가지 논리적인 방법은 문자열을 탐색하고 문자의 발생 빈도를 세어 배열에 저장한 다음 해당 문자를 발생 빈도와 함께 인쇄하는 것입니다.

알고리즘

Step 1 : Create an array of size 26 that stores the frequency of characters in the string.
Step 2 : print all the characters along with their frequency of occurrence from the array.

예시

이제 이 문제를 해결하는 프로그램을 만들어 보겠습니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
   string str = "tutorialspoint";
   int n = str.size();
   int frequency[26];
   memset(frequency, 0, sizeof(frequency));
   for (int i = 0; i < n; i++)
      frequency[str[i] - 'a']++;
   for (int i = 0; i < n; i++) {
      if (frequency[str[i] - 'a'] != 0) {
         cout<<str[i]<<"\t"<<frequency[str[i] - 'a']<<"\n";
         frequency[str[i] - 'a'] = 0;
      }
   }
   return 0;
}

출력

t 3
u 1
o 2
r 1
i 2
a 1
l 1
s 1
p 1
n 1