首页 > 试题广场 > 字符个数统计
[编程题]字符个数统计
  • 热度指数:252407 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。

输入描述:

输入一行没有空格的字符串。



输出描述:

输出范围在(0~127)字符的个数。

示例1

输入

abc

输出

3
print len(set([i for i in raw_input() if ord(i) in range(128)])) 
Life is short, I use Python!
编辑于 2016-08-28 22:40:23 回复(18)
/*C++
输入字符,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;
}

编辑于 2016-04-13 10:35:27 回复(18)
#include <iostream>
using namespace std;
int main(){
    int a[128]={0},sum=0;
    char c;
    while(cin >> c)
        a[c] = 1;
    for(int i = 0; i < 128; i++)
        if(a[i])
        	sum++;
    cout << sum;
    return 0;
}

发表于 2016-07-23 21:24:01 回复(25)
/*编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计*/
//输入描述:输入N个字符,字符在ACSII码范围内(0~127)
//输出描述:输出字符的个数 #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;
}

发表于 2016-03-31 21:39:12 回复(33)
import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String str=sc.nextLine();
            char[] ch=str.toCharArray();
            HashSet<Character> set=new HashSet<Character>();
            for (int i = 0; i < ch.length; i++) {
                set.add(ch[i]);
            }
            System.out.println(set.size());
        }
        sc.close();
    }
}
发表于 2018-04-06 22:17:29 回复(10)
#include <iostream>
#include <string>
using namespace std;

int main()
    {
    string b;
    getline(cin,b);
    int count=0;
    for(int i=0;i<=127;i++)
        if(b.find(i)!=string::npos)
        count++;
    cout<<count;
}

发表于 2016-05-09 19:40:23 回复(5)

python一行***法:
将输入的字符串转为set,输出set的长度即可

import sys
print(len(set(list(sys.stdin.readline()))))
发表于 2017-09-06 11:03:16 回复(18)

}#include <stdio.h>
#include <string.h>
int main(void)
{
    char a[1000] ;
    int b[200] = {0} ;
    int i, j, k ;
	int n =0;
    
    gets(a) ;
    
    for(i=0; i<strlen(a); i++)
    {
		for(j=0; j<128; j++)
		{
			if( a[i] == j)		
				b[j]++ ;
		}
    }

	for(k=0; k<128; k++)
	{
		if(b[k] != 0)
			n++ ;
	}

	printf("%d\n", n) ;
    return 0 ;
}

发表于 2016-08-27 23:35:09 回复(2)
#include <stdio.h>
#include <string.h>
int main()
{
    char str[10000];
    scanf("%s",str);
    int ascll[128]={0};
    int time=0;
    
    for(int i=0;i<strlen(str);i++)
    {
        if(ascll[str[i]]==0)
        {
            ascll[str[i]]++;
            time++;
        }
    }
    printf("%d",time);
}

编辑于 2020-07-01 10:21:26 回复(0)
Python:
num = input()
dict = []
for i in range(len(num)):
    if num[i] not in dict and 0 <= ord(num[i]) <= 127:
        dict.append(num[i])
print(len(dict))

发表于 2018-03-29 16:37:11 回复(1)
import java.util.Scanner;
public class Main{
	public static void main(String[] args) {		
		Scanner sc=new Scanner(System.in);
		String str = sc.nextLine();
		int count=0;
		int []tab=new int[128];
		for (int i = 0; i < str.length(); i++) {
			if(tab[str.charAt(i)]==0)
				tab[str.charAt(i)]++;
		}
		for (int i = 0; i < tab.length; i++) {
			if(tab[i]!=0)
				count++;
		}
		System.out.println(count);
	}
}


发表于 2016-07-31 19:38:50 回复(3)
import java.util.HashSet;
import java.util.Scanner;

public class Statistics {

public static void main(String argsp[]) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
scanner.close();
HashSet<String> setchars = new HashSet<String>();
for(int i = 0; i < str.length(); i++){
if (str.charAt(i) >= 0 && str.charAt(i) <= 127) {
setchars.add(String.valueOf(str.charAt(i)));
}
}
System.out.println(setchars.size());
}
}
发表于 2016-02-18 15:44:56 回复(5)
import java.util.Scanner;
import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        char ch[] = str.toCharArray();
        HashSet<Character> set = new HashSet<Character>();
        for (int i = 0; i < ch.length; i++) {
            set.add(ch[i]);
        }
        System.out.println(set.size());
    }
}

发表于 2016-03-13 22:45:47 回复(8)
#include <iostream>
#include <string>

int main()
{
    using namespace std;
    int i=0,j=0,num=0;
    string st;
    char ss[128] = {0};
    getline(cin,st);
    for(i=0;i<st.size();i++)
    {
        ss[st[i]]++;
    }
    for(j=0;j<=127;j++)
    {
        if(ss[j] != 0)
            num++;
    }
    cout << num << endl;
    return 0;
}

发表于 2020-08-06 14:56:33 回复(0)
str1 = input()
strList = []
count = 0

for i in range(len(str1)):
    if str1[i] not in strList:
        strList.append(str1[i])
        
for i in range(len(strList)):
    if 0 < ord(strList[i]) < 127:
        count += 1

print(count)
解题思路:
1,输入字符串
2,将字符串中的字符逐一加入到列表中并用‘not in ’剔重
3,遍历列表,如果列表中的字符ASCII码值在(0,127)之间(ord()函数在python3中,返回字符的ASCII码值,十进制的),则count+1,最终count的取值就是该字符串中符合题目要求的数字。
编辑于 2020-03-17 17:17:57 回复(1)
var rl = require('readline').createInterface(process.stdin, process.stdout);
var n = 0;
var arr = [];
var index;
var value;
var i;
rl.on('line', function(line) {
    n = line.trim();
    var obj = {};
    var r = 0;
    for (i = 0; i < n.length; i++) {
        if (obj[n[i]] === undefined) {
            obj[n[i]] = 1;
            r++;
        }
    }
    console.log(r);
});
//依然是hash

发表于 2016-08-08 02:33:47 回复(0)
//参考了kiss90的写法,修改了一下;
#include <iostream>
#include <set>
#include<string>
using namespace std;
int main()
{
  string str;
    set<char> s;
   while(getline(cin,str))
       {
       for(int i=0;i<str.length();i++)
       s.insert(str[i]);//把每个字符插入到set容器s里
   cout<<s.size()<<endl;//计算set容器的元素个数,set的特点是元素必须是唯一的,重复的元素会被忽略      s.clear(); //清空了set,以便再次输入,
   }
 
   return 0; 
}
发表于 2016-07-09 14:56:48 回复(6)
#include <iostream>
#include <string>
using namespace std;
int main()
    { 
    int m,i,n=0;
    int a[128]={0};
    string str;
    getline(cin,str);
    m=str.size();
    for(i=0;i<m;i++)
        {
          if(a[str[i]]==0)
              {
              n++;
              a[str[i]]++;
          }
    }
   cout<<n<<endl;
    return 0;
}

发表于 2016-04-08 21:54:15 回复(1)
import java.util.Scanner;

public class Main{     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         String string = scanner.next();         scanner.close();         int count = 0;         for (int i = 0; i < string.length(); i++) {             if (string.charAt(i) <= 127 && string.charAt(i) >= 0 && string.lastIndexOf(string.charAt(i)) == i) {                 count++;             }         }         System.out.println(count);     }
}

发表于 2018-04-13 15:43:41 回复(0)
print(len(set(input())))

发表于 2021-02-25 16:43:43 回复(0)