1. 题目
读题
提取不重复的整数
考查点
我觉得这道题的考查点有以下几个:
- 字符串的遍历和操作,如charAt(), indexOf(), toCharArray()等方法的使用。
- 集合类的使用,如HashSet的特性和方法,或者StringBuilder的特性和方法。
- 数组的使用,如boolean数组的初始化和赋值。
- 逻辑思维和编程技巧,如如何从右向左读取数字,如何判断数字是否重复,如何输出结果等。
2. 解法
思路
使用HashSet存储不重复的数字,然后从后往前遍历字符串,如果HashSet中不包含当前字符,就将其加入HashSet并输出
代码逻辑
具体实现
public class HJ009 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int num = sc.nextInt();
System.out.println(removeDuplicatied(num));
}
// int num = 9876673;
// System.out.println(removeDuplicatied(num));
}
public static int removeDuplicatied(int num) {
Set<Integer> set = new HashSet<>();
String s = num + "";
StringBuilder sb = new StringBuilder();
for (int i = s.length() - 1; i >= 0; i--) {
int curr = s.charAt(i) - '0';
if (set.contains(curr)) {
continue;
}
sb.append(curr);
set.add(curr);
}
return Integer.parseInt(sb.toString());
}
}
浙公网安备 33010602011771号