描述
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是 0 。
数据范围: 1 \le n \le 10^{8} \1≤n≤108
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
方法一:使用substring
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int a = in.nextInt();
String str = Integer.toString(a);
String result = "";
for (int i = str.length(); i > 0; i--) {
if (!result.contains(str.substring(i - 1, i)))
result += str.substring(i - 1, i);
}
System.out.println(result);
}
}
}
方法二:使用LinkedHashSet
LinkedHashSet特点:不允许包含相同元素;遍历该集合时,LinkedHashSet会以元素的添加顺序访问集合的元素。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int a = in.nextInt();
String result = "";
String str = Integer.toString(a);
char[] strArray = str.toCharArray();
LinkedHashSet<Character> set = new LinkedHashSet<>();
for (int i = str.length() - 1; i >= 0; i--) {
set.add(strArray[i]);
}
Iterator<Character> it = set.iterator();
while (it.hasNext()) {
result += it.next();
}
System.out.println(result);
}
}
}
参考资料: