按在 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
广告