从给定的字符串数组中查找字母和字母数字字符串的计数


本文旨在实现一个程序,用于从给定的字符串数组中查找字母和字母数字字符串的计数。

众所周知,在 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 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告