题目的主要信息:

  • 获取一串字符串,要求去除重复的字符
  • 请使用HashSet解决这一问题

具体做法:

HashSet就是集合的原理,插入的内容自动去重,因此我们只需要遍历字符串将字符往HashSet里面全部添加就行了,里面只会留下全部非重复字符。

alt (ps:图示为有序集合的示例,本题中是无序集合,但是原理是一样的)

import java.util.HashSet;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        scanner.close();
        HashSet<Character> hs = new HashSet<>(); 
        for(int i = 0; i < str.length(); i++) //遍历字符串
            hs.add(str.charAt(i)); //每个字符插入集合
        for (char c:hs) { //输出集合元素
            System.out.print(c);
        }
    }
}

复杂度分析:

  • 时间复杂度:O(n)O(n)O(n),其中nnn为字符串的长度,遍历字符串
  • 空间复杂度:O(n)O(n)O(n),最坏情况字符串字符都不相同,集合大小为nnn