首页 > 试题广场 >

字符个数统计

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

数据范围:

输入描述:

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



输出描述:

输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。

示例1

输入

abc

输出

3
示例2

输入

aaa

输出

1
while(getline(cin, str))
    {
        bool isVisit[128]={false};
        auto end = str.end();
        int ret = 0;
        for(auto beg = str.begin(); beg != end; ++beg)
        {
            if(!isVisit[*beg])
            {
                isVisit[*beg] = true;
                ret++;
            }
        }
        cout << ret <<endl;
    }


发表于 2022-07-09 19:57:52 回复(0)
str_in = input()
str_out = []
for i in str_in:
    if i not in str_out:
        str_out.append(i)
    else:
        continue
print(len(str_out))

发表于 2022-07-09 18:10:08 回复(0)
a=input()
s=set() for i in a:  if ord(i)<=127 and ord(i)>=0:
        s.add(i) print(len(s))

发表于 2022-05-23 10:33:26 回复(0)
#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;
}

发表于 2022-05-09 11:21:09 回复(0)
line=input()
list=[]
for i in range(len(line)):
    if line[i] not in list:
        list.append(line[i])
print(len(list))

发表于 2022-03-26 22:10:27 回复(0)
def getl(ss):
    return len(set(ss))  # set()函数可直接去除重复的字符

st = input()
print(getl(st))
发表于 2022-03-04 17:18:53 回复(0)
#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;
}

又是没有算法思想的算法,思路完全符合人脑信息扫描学.我是脑瘫我是智障
发表于 2022-02-18 01:29:48 回复(1)

#include<string>
#include<iostream>
#include<set>
using namespace std;
int main(){
    string s;
    set<char> se;
    cin>>s;
    int len=s.length();
    for(int i=0;i<len;i++){
        se.insert(s[i]);
    }
    cout<<se.size();
    return 0;
}

发表于 2022-02-16 15:20:51 回复(1)
#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;
}

发表于 2022-01-20 10:24:36 回复(0)
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
          Console.WriteLine(Console.ReadLine().Distinct().Count());
    }
}
发表于 2021-10-29 16:19:06 回复(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)

发表于 2021-09-06 13:16:14 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    cin>>s;
    set<char>set(s.begin(),s.end());
    cout<<set.size();
}

发表于 2021-08-15 17:22:45 回复(0)
d={}
for i in input():
    if 0 < ord(i) < 127:
        d[i] = 1
print(len(d))
那字典当桶来用,重复的自动放桶里,统计桶数即可。其实ASCII不判断也能过。

编辑于 2021-06-09 01:01:31 回复(0)
计数器法,可以使用一个数组来保存是否这个字符存在,再使用一个变量result来保存次数,
1、当字符出现过时result不变
2、当字符没出现过时result++
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);
        }
    }
}

发表于 2021-05-09 11:43:19 回复(0)
print(len(set(list(input()))))

编辑于 2021-04-29 23:04:53 回复(0)
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);
        }
    }
}

发表于 2021-04-10 09:47:26 回复(0)
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);
    }
}

发表于 2021-04-09 09:55:10 回复(0)
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());
    }
}
发表于 2021-04-03 23:05:53 回复(0)
let str = readline()
function getLen(str){
    let arrStr = str.split('')
    let attrs = []
    for(let i=0;i<arrStr.length;i++){
        if(attrs.indexOf(arrStr[i])==-1){
            attrs.push(arrStr[i])
        }
    }
    console.log(attrs.length)
}
getLen(str)
发表于 2021-04-02 15:25:56 回复(1)
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,秒解
发表于 2021-03-08 11:56:02 回复(0)