分类统计方法填缺2统计串S中字符的种类和个数

/*统计串S中字符的种类和个数*/
#include<cstring>
#include<iostream>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define MAXSTRLEN 255   		//用户可在255以内定义最长串长
//typedef char SString[MAXSTRLEN+1];		//0号单元存放串的长度

typedef struct{   
   char ch[MAXSTRLEN+1];				//若是非空串,则按串长分配存储区,否则ch为NULL   
   int length;				//串长度   
}SString; 

typedef struct {
     char ch;//存放出现的字符 
     int num;//出现的个数     
 } mytype;
Status StrAssign(SString &T, char *chars) { //生成一个其值等于chars的串T
	int i;
	if (strlen(chars) > MAXSTRLEN)
		return ERROR;
	else {
		T.length = strlen(chars);
		for (i = 1; i <= T.length; i++)
			T.ch[i] = *(chars + i - 1);
		return OK;
	}
}
void StrAnalyze(SString S)//统计串S中字符的种类和个数
{char c;
  mytype T[20]; //用结构数组T存储统计结果
 int i,j;
 for (i=0;i<=20;i++) T[i].ch='\0';
  for(i=1;i<=S.length;i++)
  {
    c=S.ch[i];j=0;
    while(T[j].ch&&T[j].ch!=c) j++; //查找当前字符c是否已记录过
    if(T[j].ch) T[j].num++;
    else {T[j].ch=c;j++;}
  }//for 
  for(j=0;T[j].ch;j++)
   cout<<T[j].ch<<":"<<T[j].num<<endl;
}//StrAnalyze

int  main()
{SString S;
char*T="i love xiao forever";//可自行给定值
StrAssign(S,T);
StrAnalyze(S);
return 0;
}

/*统计串S中字符的种类和个数*/
#include<cstring>
#include<iostream>
using namespace std;
 
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define MAXSTRLEN 255           //用户可在255以内定义最长串长
//typedef char SString[MAXSTRLEN+1];        //0号单元存放串的长度
 
typedef struct{   
   char ch[MAXSTRLEN+1];                //若是非空串,则按串长分配存储区,否则ch为NULL   
   int length;                //串长度   
}SString; 
 
typedef struct {
     char ch;//存放出现的字符 
     int num;//出现的个数     
 } mytype;
Status StrAssign(SString &T, char *chars) { //生成一个其值等于chars的串T
    int i;
    if (strlen(chars) > MAXSTRLEN)
        return ERROR;
    else {
        T.length = strlen(chars);
        for (i = 1; i <= T.length; i++)
            T.ch[i] = *(chars + i - 1);
        return OK;
    }
}
void StrAnalyze(SString S)//统计串S中字符的种类和个数
{char c;
  mytype T[20]; //用结构数组T存储统计结果
 int i,j;
 for (i=0;i<=20;i++) T[i].ch='\0';
  for(i=1;i<=S.length;i++)
  {
    c=S.ch[i];j=0;
    while(T[j].ch&&T[j].ch!=c) j++; //查找当前字符c是否已记录过
    if(T[j].ch) T[j].num++;
    else {T[j].ch=c;j++;}
  }//for 
  for(j=0;T[j].ch;j++)
   cout<<T[j].ch<<":"<<T[j].num<<endl;
}//StrAnalyze
 
int  main()
{SString S;
char*T="i love xiao forever";//可自行给定值
StrAssign(S,T);
StrAnalyze(S);
return 0;
}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python的字典来统计字符不同种类字符个数。具体步骤如下: 1. 定义一个空字典,用于存储不同种类字符及其出现次数。 2. 遍历字符的每个字符,如果该字符不在字典,则将该字符作为键,值为1存入字典;如果该字符已经在字典,则将该字符对应的值加1。 3. 遍历完字符后,字典的键值对即为不同种类字符及其出现次数。 示例代码如下: ``` s = "hello, world!" char_count = {} for c in s: if c not in char_count: char_count[c] = 1 else: char_count[c] += 1 print(char_count) ``` 输出结果为: ``` {'h': 1, 'e': 1, 'l': 3, 'o': 2, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1} ``` 其,字典的键为不同种类字符,值为该字符出现的次数。 ### 回答2: Python可以很轻松地统计字符不同种类字符个数。其可以使用字典来记录每个字符出现的次数,然后根据字典键值对的个数统计不同种类字符数。 以下是具体代码实现: ```python # 定义一个字符 str = "Hello, World!" # 定义一个空字典,用来记录每个字符出现的次数 count_dict = {} # 遍历字符的每个字符统计出现次数 for char in str: if char in count_dict: count_dict[char] += 1 else: count_dict[char] = 1 # 输出每个字符出现次数 for char, count in count_dict.items(): print(char, count) # 输出不同种类字符个数 print("不同种类字符个数:", len(count_dict)) ``` 运行以上代码,输出结果如下: ``` H 1 e 1 l 3 o 2 , 1 1 W 1 r 1 d 1 ! 1 不同种类字符个数: 10 ``` 可以看到,代码成功统计字符不同种类字符个数为10。 ### 回答3: Python 统计字符不同种类字符个数,可以使用字典进行统计。具体思路如下: 1. 首先遍历字符的每个字符,使用字典记录下每个字符出现的次数。 2. 最后遍历字典,统计出不同种类字符个数。 具体代码如下: ```python str = "hello world" dict = {} for i in str: if i in dict: dict[i] += 1 else: dict[i] = 1 count = 0 for key in dict: count += 1 print("不同种类字符个数为:", count) ``` 运行结果为: ```python 不同种类字符个数为: 9 ``` 解释一下代码: 首先定义一个字符 str,并定义一个空字典 dict。然后使用 for 循环遍历字符 str 的每个字符,判断这个字符是否出现过,如果出现过,则把这个字符在字典 dict 的值加 1;如果没有出现过,则把这个字符作为字典 dict 的键,值为 1。 最后使用 for 循环遍历字典 dict,统计出不同种类字符个数。在这里,我们使用了一个计数器 count,每遍历一个键,就让计数器加一,最后得到的就是不同种类字符个数。 总的来说,Python 统计字符不同种类字符个数,使用字典是一个非常方便且高效的方法。不仅如此,使用字典可以更加灵活地进行字符统计和处理,是 Python 处理字符的常用技巧之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值