#include <iostream>
using namespace std;

int main() {
    string s;
    int flag[128]={0};
    int num=0;
    while(cin>>s){
        for(int i=0;i<s.length();i++){
            if(0<=s[i]&&s[i]<=127&&flag[(int)s[i]]==0){
                num++;
            }
            flag[(int)s[i]]=1;
        }
        cout<<num;
    }
    return 0;
}
思路:重复字符利用flag数组下标来标记,数字可以直接标记,字符的话可以用(int)强制转换成相应的ASCII数字。

#include<iostream>
#include<set>
using namespace std;
int main() {
    string text;    //存放输入的字符串
    getline(cin, text);    //获取输入的一行字符串
    set<char> s;    //使用set容器
    for(int i=0;i<text.length();i++) {
        s.insert(text[i]);    //将text中的字符逐个添加到set容器中
    }
    cout<<s.size()<<endl;    //输出set容器的长度,即为不同字符的个数
}
思路:利用<set>容器的元素互斥性(去重),将元素添加到set容器,最后输入容器长度。