题目描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
输入描述:
输入N个字符,字符在ACSII码范围内。
输出描述:
输出范围在(0~127)字符的个数。
c++ code:
#include <iostream>
#include "string.h"
using namespace std;
#define MAX 500
int main(){
char str[MAX];
int sum = 0; //统计非重字符个数
cin.getline(str, MAX);
int a = strlen(str);
//cout << a << endl;
for (int i = 0; i < a; i++) //程序后面是将重复的字符都赋值为空格
{
if (str[i] == ' ')
{
sum++;
break;
}
}
for (int i = 0; i < a; i++) //和第9个程序代码一样,只是将 -1 换成了 空格
{
if (str[i] == ' ')
{
continue;
}
for (int j = i + 1; j < a; j++)
{
if (str[j] == str[i] && str[j] != ' ')
{
str[j] = ' ';
}
}
}
for (int i = 0; i < a;i++)
{
if (str[i]!=' ')
{
sum++;
}
}
cout << sum << endl;
return 0;
}
idea:
1、程序写的第一个for,是考虑到输入的数据可能会有本来输入的时候就会有空格这个字符,因为空格的ASCII的十进制值为0,文末最后附上ASCII的码表。
2、套路和前一个统计不重复的整数,完全一样。