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


京公网安备 11010502036488号