使用 C++ 统计 N 的数字可以组成的 ASCII 值的字母数量
给定一个长整型变量,其中包含一个正数作为输入。目标是找到ASCII值数字出现在该数字的数字中的字母的数量。
从数字中选择任意两个数字,并以形成英语字母的ASCII值的方式排列它们。A-Z 的 ASCII 值从 65 到 90,a-z 的 ASCII 值从 97 到 122。
需要挑选的总数为 26+26=52。
让我们通过例子来理解。
例如
输入 - N_digits = 163465
输出 - N 的数字可以组成的 ASCII 值的字母数量为:2
说明 - 163465 中存在的 ASCII 值只有 65 和 66。因此,只有两个字母是可能的。
输入 - N_digits = 902349
输出 - N 的数字可以组成的 ASCII 值的字母数量为:2
说明 - 902349 中存在的 ASCII 值只有 90 和 99。因此,只有两个字母是可能的。
下面程序中使用的方案如下
在这种方案中,我们首先创建一个频率数组 total[10] 用于存储输入数字中数字的频率。现在取 65 到 90 和 97 到 122 范围内的每个数字 i。提取 i 的数字并在频率数组中搜索。如果 i 的所有数字都存在于频率数组中(对于所有数字,total[当前数字] 将非零),则递增计数。
- 将长整型 N_digits 作为输入。
- 函数 check(int arr[], int val) 以频率数组 arr[] 和 ASCII 数字 val 作为输入,如果 val 可以由 arr[] 中的数字组成,则返回 true。
- 使用 for 循环将频率数组复制为 total[10]。
- 现在使用 while 循环,提取 val 的每个数字并在 total[] 中搜索。
- 如果 total[digit] 为 0,则返回 false,否则使用它并将计数递减 1。
- 减少 val 以获取下一个最低有效位。
- 如果 while 完全执行,则 val 可以由 total[] 中的数字组成,因此返回 true。
- 函数 ASCII_N(long long int N_digits) 获取输入数字并返回可以由 N 的数字组成的 ASCII 值的字母的数量。
- 将初始计数设为 0 并将频率数组 total[10] 初始化为 0。
- 使用 while 循环填充 N_digits 中数字的频率数组。提取最低有效位作为 values = N_digits % 10 并将 total[values] 递增 1。
- 将 N_digits 减少 10。
- 现在使用 for 循环遍历从 97 到 122 和 65 到 90 的字母的 ASCII 数字。
- 如果任何 check(total, i) 返回 true,则递增计数。
- 在两个 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 << "Count of alphabets whose ASCII values can be formed with the digits of N are: " << ASCII_N(N_digits);
}如果我们运行上述代码,它将生成以下输出:
输出
Count of alphabets whose ASCII values can be formed with the digits of N are: 2
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP