12-字符个数统计

1- Description

编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。

输入描述
输入N个字符,字符在ACSII码范围内。
输出描述
输出范围在(0~127)字符的个数。

示例1
输入:
abc
输出:
3

2- Solution

  • 注意resultvec.erase(resultvec.begin() + j); 的使用
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    string strin;
    while(cin >> strin){
        int count = 0;
        vector<int> resultvec;
        for(int i = 0; i < strin.length(); ++i){
            if(strin[i] >= 0 && strin[i] <= 127){
                resultvec.push_back(strin[i]);
            }
        }
        sort(resultvec.begin(),resultvec.end());
        int countnum = 0;
        for(int i = 0; i < resultvec.size(); ++i){//取出重复元素
            for(int j = i + 1; j < resultvec.size(); ++j){
                if(resultvec[i] == resultvec[j]){
                    resultvec.erase(resultvec.begin() + j);//这里不能写成resultvec.erase( j);==》必须是迭代的输入
                    --j;
                }
            }
        }
        cout << resultvec.size()<<endl;
    }
    return 0;
}
  • 对自动排序且去重的情况可以考虑用set,ascii值在[0,127]时插入集合set中,输出set中的元素个数
#include<iostream>
#include<set>
using namespace std;
int main()
{
    char c;
    set<char> s;
    while(cin>>c){
        if(c>=0 && c<=127){
            s.insert(c);
        }
    }
    cout << s.size() <<endl;
}
#include<iostream>
using namespace std;
int main(){
    char ch;
    int arr[128]={0};
    int count=0;
    while(cin>>ch){
        if(ch>=0 && ch<=127){
            arr[ch]++;
        }
    }
    for(int i=0;i<128;i++){
        if(arr[i]>0)
            count++;
    }
    cout<<count<<endl;
    return 0;
}

欢迎关注公众号:CodeLab

### 回答1: 统计不同字符个数可以通过使用字典来实现。具体步骤如下: 1. 定义一个空字典,用于存储每个字符出现的次数。 2. 遍历字符串中的每个字符,如果该字符已经在字典中出现过,则将该字符对应的值加1;否则,在字典中添加该字符,并将其对应的值初始化为1。 3. 最后,遍历字典,统计不同字符个数。 示例代码如下: ```python s = "hello, world!" d = {} for c in s: if c in d: d[c] += 1 else: d[c] = 1 count = len(d) print("不同字符个数为:", count) ``` 输出结果为: ``` 不同字符个数为: 10 ``` 其中,字典d的内容为: ``` {'h': 1, 'e': 1, 'l': 3, 'o': 2, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1} ``` ### 回答2: 在程序设计中,有时需要统计一个字符串中不同字符个数。Python中的字符串是不可改变的序列,可以通过遍历字符串的每个字符,利用集合的特性来统计不同字符个数。以下是一个简单的例子: ```python s = 'abcaabc' count = len(set(s)) print(count) ``` 解释:首先定义一个字符串`'abcaabc'`,然后通过`set`函数将字符串中的字符去重,得到一个只包含不同字符的集合,最后利用`len`函数统计集合中元素的个数,即不同字符个数。运行结果为`3`,即字符串`'abcaabc'`中不同字符个数。 另外,如果想要统计字符串中每个字符出现的次数,可以使用Python内置的`collections`模块中的`Counter`函数,代码如下: ```python from collections import Counter s = 'abcaabc' count = Counter(s) print(count) ``` 解释:首先导入`collections`模块中的`Counter`函数,然后定义字符串`'abcaabc'`,接着调用`Counter`函数统计字符串中每个字符出现的次数,最后将结果打印出来。运行结果为`Counter({'a': 3, 'b': 2, 'c': 2})`,即字符串`'abcaabc'`中每个字符出现的次数分别为`a:3`、`b:2`、`c:2`。 总之,Python中统计字符串中不同字符个数可以使用`set`函数,统计每个字符出现次数可以使用`collections`模块中的`Counter`函数,这些函数都可以帮助我们更方便地对字符串进行处理和分析。 ### 回答3: 在计算机编程或数据处理中,经常需要统计字符串中不同字符个数。Python中有多种方法可以实现这个目标,下面将对其中几种方法进行介绍。 方法一:利用集合(set)的特性 集合是Python中的一种数据类型,它的特点是不允许有重复元素,所以我们可以将字符串中的字符逐一添加到集合中,并统计集合的长度即可。具体代码如下: ``` string = "hello world" char_set = set(string) count = len(char_set) print(count) ``` 输出结果为9,说明"hello world"中共有9种不同的字符。 方法二:利用字典(dictionary)的特性 字典是Python中的另一种数据类型,它类似于一个关联数组,可以存储一对“键-值”映射关系。我们可以将字符串中的字符作为“键”,将出现的次数作为“值”,逐一添加到字典中,最后输出字典中“键”的数量即可。具体代码如下: ``` string = "hello world" char_dict = {} for char in string: if char in char_dict: char_dict[char] += 1 else: char_dict[char] = 1 count = len(char_dict) print(count) ``` 输出结果同样为9。 方法三:利用collections模块中的Counter类 Python的collections模块中有一个Counter类,可以用来统计字符串中每个字符出现的次数。具体做法是先将字符串转换成列表,然后将列表传入Counter类的构造函数中即可,最后输出Counter类中元素的数量即可。具体代码如下: ``` from collections import Counter string = "hello world" char_list = list(string) char_counter = Counter(char_list) count = len(char_counter) print(count) ``` 输出结果同样为9。 总之,以上这几种方法都可以用来统计字符串中不同字符个数,具体的选择取决于具体的需求和使用场景。其中,方法一使用起来比较简单,但可能会占用较多的内存;方法二使用起来稍微麻烦一些,但可以方便地统计每个字符出现的次数;方法三则可以很方便地使用collections模块中的其它功能,如most_common()方法来查找出现次数最多的字符等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值