在C ++中其ASCII值可以由N的数字组成的字母计数

给定一个包含正数作为输入的长变量。目的是找到字母的计数,这些字母的ASCII值数字出现在数字的数字中。

从数字中选择任意两个数字,并以使其形成英语字母的ASCII值的方式进行排列。AZ的ASCII值从65到90开始,az的ASCII值从97到122开始。

将被挑选的总数将是26 + 26 = 52。

让我们通过示例来理解。

例如

输入  -N_digits = 163465

输出 -ASCII值可以用N的数字形成的字母计数为:2

说明-163465中显示的ASCII值仅为65和66。因此,只有两个字母是可能的。

输入-N_digits = 902349

输出 -ASCII值可以用N的数字形成的字母计数为:2

说明-902349中存在的ASCII值仅为90和99。因此,只有两个字母是可能的。

以下程序中使用的方法如下

在这种方法中,我们将首先创建一个频率数组total [10],用于存储输入数字中的数字频率。现在,将i取在65到90以及97到122的范围内。提取i的数字并在频率数组中搜索。如果频率数组中存在i的所有数字(所有数字的total [当前数字]都不为零),则递增计数。

  • 以long int N_digits作为输入。

  • 函数check(int arr [],int val)将频率数组arr []和ASCII数字val作为输入,如果val可以由arr []中的数字组成,则返回true。

  • 使用for循环将频率数组的副本复制为total [10]。

  • 现在使用while循环,提取val的每个数字并搜索total []。

  • 如果total [digit]为0,则返回false,否则使用false并将其计数减1。

  • 降低下一个LSB的val。

  • 如果while完全执行,则val可以由total []中的数字组成,因此返回true。

  • 函数ASCII_N(long long int N_digits)接受输入的数字并返回字母的计数,其ASCII值可以用N的数字形成。

  • 将初始计数设为0,然后将频率数组total [10]初始化为0。

  • 使用while循环为N_digits中的数字填充频率数组。将LSB提取为值= N个数字%10,并将total [values]递增1。

  • 将N_digits减少10。

  • 现在,使用for循环遍历从97到122和65到90的ASCII字母数字。

  • 如果check(total, i)返回真,则增加计数。

  • 在两个for循环的末尾,返回计数作为结果。

示例

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

bool check(int arr[], int val) {
   int total[10];
   for (int i = 0; i < 10; i++) {
      total[i] = arr[i];
   }
   while (val > 0) {
      int values = val % 10;
      if (total[values] == 0) {
         return false;
      } else {
         total[values]--;
      }
      val = floor(val / 10);
   }
   return true;
}

int ASCII_N(long long int N_digits) {
   int count = 0;
   int total[10] = {
      0
   };

   while (N_digits > 0) {
      int values = N_digits % 10;
      total[values]++;
      N_digits = floor(N_digits / 10);
   }
   for (int i = 97; i <= 122; i++) {
      if (check(total, i)) {
         count++;
      }
   }
   for (int i = 65; i < 91; i++) {
      if (check(total, i)) {
         count++;
      }
   }
   return count;
}
int main() {
   long long int N_digits = 251326;
   cout << "ASCII值可以由N的数字组成的字母计数为: " << ASCII_N(N_digits);
}

如果我们运行上面的代码,它将生成以下输出-

输出结果

ASCII值可以由N的数字组成的字母计数为: 2

猜你喜欢