首页 > 试题广场 >

字符个数统计

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

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        //使用HashSet存储不同的字符
        Set<Character> chars = new HashSet<>();
        for (int i = 0; i < str.length(); i++) {
            // 将字符添加到HashSet中,自动去重
            chars.add(str.charAt(i));
        }
        System.out.println(chars.size());
    }
}

发表于 2024-10-17 21:29:57 回复(0)
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        List<Character> list = new ArrayList<>();
        String str = in.nextLine();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (!list.contains(c)) {
                list.add(c);
            }
        }
        System.out.println(list.size());
    }
}

发表于 2024-10-09 14:01:21 回复(0)
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        TreeSet<Integer> mySet = new TreeSet<>();
        while (in.hasNext()) {
            String str = in.nextLine();
            for (int i = 0; i < str.length(); i++) {
                mySet.add((int) str.charAt(i));
            }
        }
        System.out.print(mySet.size());
    }
}
发表于 2024-09-30 20:42:40 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        System.out.println(str.chars().distinct().count());
    }
}

发表于 2024-09-25 12:06:13 回复(0)

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;

public class Main {

	public static void main(String[] args){
        List<String> list = new ArrayList<>();
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
        	String str = in.nextLine();
            String strs[] = str.split("");
            for(int i=0;i<strs.length;i++){
                //如果List中不存在就添加,存在就不添加
                if(!list.contains(strs[i])){
                    list.add(strs[i]);
                }
            }
            System.out.println(list.size());
            //因为是循环输入,上次记录的结果要清空
            list.clear();
        }
        in.close();
    }
}

发表于 2024-09-24 09:09:55 回复(0)
import java.util.*;

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

发表于 2024-09-19 18:06:11 回复(0)
  • 时间复杂度:O(n),其中n是输入字符串的长度。使用HashSet的插入操作在平均情况下是O(1),因此遍历字符串的整体复杂度为O(n)。
  • 空间复杂度:O(1),由于字符的范围是有限的(ASCII 0 到 127),HashSet最多只能存储 128 个不同的字符。
  • import java.util.*;
    import java.util.stream.Collectors;
    import java.util.HashSet;
    
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            // System.out.println("请输入要统计的字符串:");
            String next = sc.next();
            HashSet<Character> uniqueChars = new HashSet<>();
            for (char c : next.toCharArray()) {
                if(c>=0 && c<=127){
                    uniqueChars.add(c);
                }
            }
            System.out.println(uniqueChars.size());
        }
    }


  • 发表于 2024-09-12 17:34:21 回复(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 的区别
            String str = in.nextLine();
            int length = str.length();
            HashSet<Character> Hashset = new HashSet<>(length);
            for (int i =0;i<length;i++){
                Hashset.add(str.charAt(i));
            }
            System.out.println(Hashset.size());
        }
    }

    发表于 2024-09-12 00:07:47 回复(0)
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            while (in.hasNext()) { // 注意 while 处理多个 case
                String a = in.nextLine();
                StringBuilder b = new StringBuilder();
                int[] asciiTable = new int[128];
                for (char c : a.toCharArray()) {
                    // 在处理字符串进行去重操作时,可以使用这个数组来快速判断一个字符是否已经被处理过。
                    // 如果asciiTable[c]的值为 0,表示字符c还没有出现过;如果为 1,则表示已经出现过。
                    if (asciiTable[c] == 0) {
                        asciiTable[c] = 1;
                        b.append(c);
                    }
                }
                System.out.println(b.toString().length());
            }
        }
    发表于 2024-09-06 15:38:47 回复(0)
    import java.util.Scanner;
    import java.util.HashSet;

    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            HashSet<Character> set = new HashSet<>();
            String input = in.nextLine(); // 读取一行字符串

            for (char c : input.toCharArray()) { // 遍历字符串中的每个字符
                set.add(c); // 将字符添加到集合中
            }
            System.out.println( set.size());
        }
    }


    发表于 2024-09-05 15:31:00 回复(0)
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String inputStr = in.next();
            Set<Character> cSet = new HashSet<>();
            for(int  i = 0 ; i < inputStr.length();i++){
                char c = inputStr.charAt(i);
                cSet.add(c);
            }
            System.out.println(cSet.size());
        }
    }
    发表于 2024-09-04 14:04:53 回复(0)
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;

    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            String a = in.nextLine();
            Integer []content = new Integer[128];
            int sum = 0;
            for (int i = 0; i < a.length(); i++) {
                int j = a.charAt(i);
                if (j >= 0 && j <= 127) {
                    if (content[j] != null) {
                        sum = sum;
                    } else {
                        content[j] = j;
                        sum++;
                    }
                }


            }
            System.out.println(sum);
        }
    }
    发表于 2024-08-18 19:25:41 回复(0)
    import java.util.Scanner;

    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String str = in.nextLine();
            int num = 0;
            while (str.length()>0 && str.length() <=500){
                String a = str.substring(0,1);
                num++;
                int length1 =str.length();
                try {
                    str = str.replaceAll(a,"");
                } catch (Exception e) {
                }
                if(length1== str.length()){
                    str = str.replaceAll("\\"+a,"");
                }
               
            }
            System.out.println(num);
        }
    }
    发表于 2024-08-06 13:11:08 回复(0)
    import java.util.stream.Collectors;

    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String string = in.nextLine();
            List<String> list = Arrays.asList(string.split(""));
            List<String> tempList = list.stream().distinct().collect(Collectors.toList());
            System.out.print(tempList.size());
        }
    }
    发表于 2024-07-15 18:08:03 回复(0)
    import java.util.Scanner;
    import java.util.TreeSet;
    
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            TreeSet<Character> set=new TreeSet<>();
            String str=in.nextLine();
            char[] ch=str.toCharArray();
            for(char i:ch)
            {
                set.add(i);
            }
            System.out.println(set.size());
        }
    }

    发表于 2024-07-11 16:39:51 回复(0)
    import java.util.Scanner;
    
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            String str = new Scanner(System.in).nextLine();
            int count = 0;
            for (int i = 0; i < str.length(); i++) {
                if (str.indexOf(str.charAt(i)) == i) {
                    count++;
                }
            }
            System.out.println(count);
        }
    }

    发表于 2024-07-02 22:48:29 回复(0)