透過連線給定字串的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

解釋 - 結果ASCII字串為97。因此,我們相應地列印了數字的頻率。

輸入

alpha = "123";

輸出

1 1 0 0 1 2 0 0 0 1

解釋 - ASCII字串為495051,我們根據該字串列印了數字的頻率。

方法1

在這種方法中,我們首先透過連線每個字元的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

時間複雜度 - O(N) 以獲取每個字元的ASCII值。

空間複雜度 - O(N) 以建立asc_str字串。

我們學習瞭如何獲取字元的ASCII值以及如何使用給定問題計算字串中每個數字的頻率。程式設計師可以計算結果字串中奇數和偶數數字的總數以進行更多練習。

更新於: 2023年8月24日

104 次檢視

開啟你的 職業生涯

完成課程獲得認證

立即開始
廣告

© . All rights reserved.