题目的主要信息:
- 获取一串字符串,要求去除重复的字符
- 请使用HashSet解决这一问题
具体做法:
HashSet就是集合的原理,插入的内容自动去重,因此我们只需要遍历字符串将字符往HashSet里面全部添加就行了,里面只会留下全部非重复字符。
(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),其中n为字符串的长度,遍历字符串
- 空间复杂度:O(n),最坏情况字符串字符都不相同,集合大小为n