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