從給定的字串陣列中查詢字母和字母數字字串的計數


本文旨在實現一個程式,用於從給定的字串陣列中查詢字母和字母數字字串的計數。

眾所周知,在 C 語言程式設計中,字串是一組以空字元“\0”結尾的字元。C 字串中的字元儲存在字元陣列中。C 字串與字元陣列的不同之處在於它以獨特的字元“\0”結尾。

輸入

arr[] = {“snmd”, “nej7dnr”, “snmd”, “dltmdj”, “lbwm2p6”}

輸出

 3 2
“snmd”: 2
“nej7dnr”: 1
“dltmdj”: 1
“lbwn2p6”: 1

解釋

輸入陣列中的字串“snmd”和“dltmdjj”是唯一僅包含字母的字串;其餘字串“nej7dnr”、“lbwm2p6”包含數字。因此這兩個字串是字母數字的。

共有三個字母字串和兩個字母數字字串。字母字串“snmd”的頻率為 2,其餘所有字串的頻率為 1。

輸入

arr[] = {“s2d9”, “nr9bdr”, “s2d9”, “smoddj”, “lenek9”}

輸出

 1 4
“s2d9”: 2
“nr9bdr”: 1
“smoddjj”: 1
“lenek9”: 1

解釋

輸入陣列中的字串“smoddj”是唯一包含字母的字串;其餘字串“s2d9”、“nr9bdr”和“lenek9”包含數字。因此這三個字串是字母數字的。

共有一個字母字串和四個字母數字字串。“s2d9”字母數字字串的頻率為 2,所有其他字串的頻率為 1。

輸入

arr[] = {“ghjdj”, “ghjdj”, “1g3thd”, “ghjdj”, “paj8sbe9”}

輸出

3 2
“ghjdj”: 3
“1g3thd”: 1
“paj8sbe9”: 1

解釋

輸入陣列中的字串“ghjdjd”是唯一包含字母的字串;其餘字串“1g3thd”、“paj8sbe9”包含數字。因此這兩個字串是字母數字的。

共有三個字母字串和兩個字母數字字串。字母字串“ghjdj”的頻率為 3,其餘所有字串的頻率為 1。

問題陳述

實現一個 C 程式,用於從給定的字串陣列中查詢字母和字母數字字串的計數

方法

解決這個問題並從給定的字串陣列中查詢字母和字母數字字串計數的方法是使用雜湊技術

以下是雜湊技術的簡要概述。

為了輕鬆地在陣列中查詢特定值,資料結構使用雜湊。為陣列中的每個元件生成一個唯一的雜湊碼,然後將雜湊碼儲存在原始元素的位置。這使得在查詢特定值時可以快速查詢值,並易於檢視任何重複。

為了輕鬆地在陣列中查詢特定值,資料結構使用一種稱為雜湊的方法。為陣列中的每個元件生成一個唯一的雜湊碼,然後將雜湊碼儲存在原始元素的位置。這使得在查詢特定值時可以快速查詢值,並易於檢視任何重複。

演算法

下面是實現程式以查詢給定字串陣列中字母和字母數字字串計數的演算法:

  • 步驟 1 - 實現一個查詢頻率的函式。

  • 步驟 2 - 定義兩個陣列 mp1 和 mp2 分別儲存字母和字母數字字串的頻率。

  • 步驟 3 - 定義兩個整數變數 c1 和 c2 來計算頻率。

  • 步驟 4 - 最後列印字母字串的頻率和字母數字字串的頻率作為結果。

示例(C 程式)

以下是上述演算法的 C 語言程式實現,用於從給定的字串陣列中查詢字母和字母數字字串的計數:

#include <stdio.h>
#include <string.h>
void findTheFrequency(char v[][50], int n) {
   int c1 = 0, c2 = 0;
   int mp1[50] = {0};
   int mp2[50] = {0};
   int isAlphabetic;
   for (int i = 0; i < n; i++) {
      isAlphabetic = 1;
      for (int j = 0; j < strlen(v[i]); j++) {
         if (v[i][j] >= '0' && v[i][j] <= '9') {
            isAlphabetic = 0;
            break;
         }
      }
      if (isAlphabetic) {
         c1++;
         mp1[i]++;
      } else {
         c2++;
         mp2[i]++;
      }
   }
   printf("%d %d
", c1, c2); for (int i = 0; i < n; i++) { if (mp1[i] > 0) { printf("%s: %d
", v[i], mp1[i]); } } for (int i = 0; i < n; i++) { if (mp2[i] > 0) { printf("%s: %d
", v[i], mp2[i]); } } } int main() { int N = 5; char arr[][50] = {"def", "huy7p", "xyz", "khbnjdj", "sndjd9o8"}; findTheFrequency(arr, N); return 0; }

輸出

執行後,將產生以下輸出:

3 2def: 1xyz: 1khbnjdj: 1huy7p: 1sndjd9o8: 1

結論

同樣,我們可以從給定的字串陣列中查詢字母和字母數字字串的計數。本文解決了從給定的字串陣列中查詢字母和字母數字字串計數的挑戰。

這裡提供了 C 語言程式碼以及用於從給定字串陣列中查詢字母和字母數字字串計數的演算法。

更新於:2023年10月31日

261 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告