首页 > 试题广场 >

字符个数统计

[编程题]字符个数统计
  • 热度指数:505939 时间限制: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
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        String line = in.nextLine();

        int count = 0;
        for(int i=0;i<line.length();i++){
            if(line.indexOf(line.charAt(i))==i){
                count++;
            }
        }

        System.out.println(count);
    }
}


发表于 2024-04-26 11:31:38 回复(0)
import java.util.HashSet;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();

        HashSet<Character> set = new HashSet<>();
        for(int i=0;i<input.length();i++) {
            char tmp = input.charAt(i);
            if(0<=tmp&&tmp<=127) {
                set.add(tmp);
            }
        }

        System.out.println(set.size());
    }
}

发表于 2024-04-22 11:54:41 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();

        List list = new ArrayList();

        for(int i=0;i<s.length();i++){
            if(!list.contains(s.charAt(i))){
                list.add(s.charAt(i));
            }
        }

        System.out.println(list.size());


    }
}
编辑于 2024-04-18 16:20:17 回复(0)
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s=scan.nextLine();
        HashSet<Character> set=new HashSet<Character>();
        char[] chars=s.toCharArray();
        for(int i=0;i<chars.length;++i){
            set.add(chars[i]);
        }
       System.out.println(set.size());  
    }
}
编辑于 2024-03-31 10:25:05 回复(0)
import java.util.HashSet;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        HashSet<Character> set = new HashSet();
        while (in.hasNext()) { // 注意 while 处理多个 case
            String str = in.next();
            for (int i = 0; i < str.length(); ++ i) {
                set.add(str.charAt(i));
            }
            System.out.println(set.size());
        }
    }
}

发表于 2024-03-14 22:08:41 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Map<Character, Integer> map = new HashMap<>();
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String str = in.next();
            char [] cStr = str.toCharArray();
            for(char cstr : cStr){
                if(!map.containsKey(cstr)){
                    map.put(cstr, 1);
                } else{
                    map.put(cstr, map.get(cstr)+1);
                }
            }
            System.out.println(map.size());
        }
    }
}
map 大法好。。。。。。
发表于 2024-03-14 14:49:29 回复(0)
import java.io.BufferedReader;
import java.io.InputStreamReader;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args)throws Exception {
        String line = new BufferedReader(new InputStreamReader(System.in)).readLine();
        byte [] flags=new byte[128];
        short count=0; //short 就够了
        for(int i=0;i<line.length();i++){
            char c=line.charAt(i);
            if (c <= 127 &&c >= 0 && flags[c]==0 && c != '\n') {
                flags[c]=1;
                ++count; 
            }
        }
        System.out.println(count);
    }
}

编辑于 2024-03-07 21:46:05 回复(0)
仅用数组就能解决,不需要HashSet
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) { 
            String s = in.nextLine();
            int length = s.length();
            int[] arr = new int[128];
            int count = 0;
            for (int i = 0; i < length; i++) {
                char c = s.charAt(i);
                if (arr[c] == 0){
                    arr[c] = c;
                    count++;
                }
            }
            System.out.println(count);
        }
    }


编辑于 2024-03-04 18:24:53 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        char[] charArray = in.next().toCharArray();
        HashSet set = new HashSet();
        for (char c : charArray) {
            set.add(c);
        }
        System.out.println(set.size());
    }
}

发表于 2024-02-19 11:43:02 回复(0)
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> list =new ArrayList<String>();
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            String s=in.nextLine();
            for(int i=0;i<s.length();i++){
                String tmp=s.substring(i,i+1);
                list.add(tmp);
            }
        List<String> rslist=list.stream().distinct().collect(Collectors.toList());
        System.out.print(rslist.size());
        }
    }
}
发表于 2023-11-30 15:20:44 回复(0)
import java.util.Scanner;
import java.util.HashSet;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            String[] strs = str.split("");
            HashSet<String> set = new HashSet<>();
            for (int i=0;i<strs.length;i++) {
                set.add(strs[i]);
            }
            System.out.println(set.size());
        }
    }
}

发表于 2023-11-28 14:50:12 回复(0)
import java.util.HashSet;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
       Scanner sc=new Scanner(System.in);
        String s = sc.nextLine();
        HashSet<Character>hs=new HashSet<>();
        for (int i = 0; i < s.length(); i++) {
            hs.add(s.charAt(i));
        }
        System.out.println(hs.size());
    }
}

发表于 2023-11-15 19:50:28 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        if (in.hasNextLine()){
            String s = in.nextLine();
            fun2(s);
        }
    }

    private static void fun2(String s) {
        int[] arr = new int[128];
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            arr[c]++;
        }
        int count= 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >0){
                count ++;
            }
        }
        System.out.println(count);
    }
}
发表于 2023-11-15 00:34:05 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = new String();
        s = in.next();
        Set<String> set =  new TreeSet<>();
        for (int i = 0; i < s.length() ; i++) {
            set.add(String.valueOf(s.charAt(i)));

        }
        System.out.println(set.size());


    }
}

用set直接插入没有重复的,然后统计数量长度,感觉是我能想到最简洁的了

发表于 2023-10-22 23:29:05 回复(0)
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Set<String> value = new HashSet<>(Arrays.asList(in.next().split("")));
        System.out.println(value.size());

    }
发表于 2023-10-12 15:32:32 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] str=in.nextLine().toCharArray();
        boolean[] exist=new boolean[128];
        for(int i=0;i<str.length;i++){
            exist[str[i]]=true;
        }
        int sum=0;
        for(int i=0;i<128;i++){
            sum+=exist[i]?1:0;
        }
        System.out.print(sum);
    }
}

发表于 2023-09-10 14:45:53 回复(0)
import java.util.*;
import java.util.stream.Collectors;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = in.next();
        String[]  arr = str.split("");
        List<String> list = Arrays.asList(arr);
        List<String> collect = list.stream().distinct().collect(Collectors.toList());
        System.out.print(collect.size());
    }
}
发表于 2023-09-01 09:30:24 回复(0)