编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
数据范围: ![](https://www.nowcoder.com/equation?tex=1%20%5Cle%20n%20%5Cle%20500%20%5C)
输入一行没有空格的字符串。
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。
abc
3
aaa
1
#include<iostream> using namespace std; int main() { string s; cin>>s; bool flag[128]={0}; int count=0; for(int i=0;i<s.length();i++) { if(flag[int(s[i])]==0) count++; flag[int(s[i])]=1; } cout<<count; }
line=input() list=[] for i in range(len(line)): if line[i] not in list: list.append(line[i]) print(len(list))
#include<iostream> #include<string> using namespace std; int main(){ string s; string unistr = ""; while(cin>>s){ long int unicharnum = s.length(); for(long int i = 0; i<s.length();i++){ if(s[i] < 0 || s[i] > 127){ continue; } if(unistr.find(s[i]) == string::npos){ unistr+=s[i]; } } cout<<unistr.length(); } return 0; }又是没有算法思想的算法,思路完全符合人脑信息扫描学.我是脑瘫我是智障
#include<stdio.h> #include<string.h> #include<stdlib.h> int cmp(void* e1,void* e2) { return *(char*)e1-*(char*)e2; } int main() { char ch[500]={0}; int i=0; int j=0; scanf("%s",ch); int len=strlen(ch); //排序 qsort(ch,len,1,cmp); //去重 for(i=0;i<len-1;i++) { if(ch[i]==ch[i+1]) { for(j=0;j<len-1;j++) { ch[j]=ch[j+1]; } i--; len--; } } printf("%d",len); return 0; }
#法一:转换为列表,去重,输出长度 def CountDist(string): lst = list(string) arr = [] for i in lst: if i not in arr: arr.append(i) print(len(arr)) if __name__=='__main__': x = input() CountDist(x)
#法二:利用集合特点去重,输出集合长度 def CountDist(string): lst = list(string) arr = set(lst) print(len(arr)) if __name__=='__main__': x = input() CountDist(x)
d={} for i in input(): if 0 < ord(i) < 127: d[i] = 1 print(len(d))那字典当桶来用,重复的自动放桶里,统计桶数即可。其实ASCII不判断也能过。
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ String str = in.nextLine(); char[] chs = str.toCharArray(); int [] buckets = new int[128]; int result = 0; for(Character ch:chs){ if (buckets[ch]>0){ continue; }else { buckets[ch]++; result++; } } System.out.println(result); } } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { String str = scanner.nextLine(); int count = 0; Set set = new HashSet(); for(int i=0;i<str.length();i++){ if(set.add(str.substring(i,i+1))){ count++; } } System.out.println(count); } } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String str = sc.nextLine(); char[] arr = str.toCharArray(); HashSet<Character> set = new HashSet<>(); int sum =0; for(int i = 0; i<arr.length; i++){ if(!set.contains(arr[i])){ set.add(arr[i]); sum++; } } System.out.println(sum); } }
import java.util.HashSet; import java.util.Set; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); char[] chars = sc.next().toCharArray(); Set<Character> set = new HashSet<>(); for (char c : chars) { set.add(c); } System.out.print(set.size()); } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); String s = input.next(); Set<Character> set = new HashSet<Character>(); for(int i=0; i<s.length(); i++){ set.add(s.charAt(i)); } System.out.print(set.size()); } }用set,秒解