使用 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