C++ 通过连接给定字符串的ASCII值来查找每个数字0-9的频率

C++ 通过连接给定字符串的ASCII值来查找每个数字0-9的频率

在这个问题中,我们需要在将所有字符的ASCII值合并后计算数字的频率。

解决这个问题的方法是创建一个包含每个字符的ASCII值的字符串,并计算字符串中数字的频率。

问题描述 -我们有一个包含不同字符的字符串alpha,字符串的长度为N。我们需要计算拼接给定字符串的字符的ASCII值后每个数字的频率。

示例

输入

alpha = "tutorialspoint"

输出

4 25 1 0 1 3 3 2 1 1

解释 - 将每个字符的ASCII值进行拼接后,我们得到了字符串’11611711611111410597108115112111105110116’。

我们统计了ASCII字符串中每个数字的频率。

0的频率是4,1的频率是25,3的频率是1,4的频率是0,依此类推。

输入

alpha = "a";

输出

0 0 0 0 0 0 0 1 0 1

解释 - 97是结果的ASCII字符串。因此,我们相应打印了数字的频率。

输入

alpha = "123";

输出

1 1 0 0 1 2 0 0 0 1

解释 – ASCII字符串为495051,我们根据这个字符串打印数字的频率。

方法

在这种方法中,我们首先通过连接每个字符的ASCII值来创建一个ASCII字符串。之后,我们将使用数组来统计给定字符串中每个数字的频率。

算法

步骤1 - 定义asc_str字符串变量,并用空字符串进行初始化。

步骤2 - 开始遍历给定字符串。

步骤3 - 使用类型转换将字符转换为ASCII值,并将整数ASCII值转换为字符串。然后,将ASCII字符串值附加到asc_str字符串末尾。

步骤4 - 现在,我们需要统计asc_str字符串中每个数字的频率。因此,定义大小为10的’dgFreq’数组,并将其初始化为零。

步骤5 - 开始遍历asc_str字符串,并根据数字更新数组元素。

步骤6 - 逐个打印每个数字的频率。

示例

#include <bits/stdc++.h>
using namespace std;

void findDigitFreq(string alpha) {
   // To store the ASCII value of the given string
   string asc_str = "";
   // Traverse the string
   for (int p = 0; p < alpha.size(); p++) {
      // Get ASCII value of current character and concatenate with the string
      asc_str += to_string((int)alpha[p]);
   }
   // Array to store dgFreq of digits
   int dgFreq[10] = {0};
   // Traverse asc_str
   for (int p = 0; p < asc_str.size(); p++) {
      // Increase digit frequency by 1
      dgFreq[asc_str[p] - '0']++;
   }
   // Show frequency of all digits
   for (int p = 0; p < 10; p++) {
      cout << dgFreq[p] << " ";
   }
}
int main() {
   string alpha = "tutorialspoint";
   findDigitFreq(alpha);
   return 0;
}

输出

4 25 1 0 1 3 3 2 1 1

时间复杂度 - 获取每个字符的ASCII值的时间复杂度为O(N)。

空间复杂度 - 创建asc_str字符串的空间复杂度为O(N)。

通过这个问题,我们学会了获取字符的ASCII值以及计算字符串中每个数字的频率。程序员可以计算结果字符串中奇数和偶数数字的总数,以便进行更多的练习。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程