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

更新于: 03-Jan-2020

490 次浏览

开启你的职业生涯

完成课程,获得认证

开始
广告