#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容器,最后输入容器长度。