packagetest;importjava.awt.List;importjava.lang.reflect.Array;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.LinkedHashSet;importjava.util.Scanner;importjava.util.Stack;/** 题目描述
* 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
**/
public classexam18 {public static voidmain(String[] args) {
Scanner scanner= newScanner(System.in);while(scanner.hasNext()) {int num =scanner.nextInt();
readOrder1(num);//readOrder2(num);//readOrder3(num);//readOrder4(num);
}
scanner.close();
}public static void readOrder1(intnum) {//方法1:使用linkedhashset有序集合
LinkedHashSet set = new LinkedHashSet();while (num != 0) {//从右往左添加数到集合中
set.add(num % 10);
num/= 10;
}//使用迭代器,不知道下标
Iterator iterator =set.iterator();while(iterator.hasNext()) {
Object value=iterator.next();
System.out.print(value);
}
}public static void readOrder2(intnum) {//使用arraylist查看list是否包含
String str =String.valueOf(num);
ArrayList list= newArrayList();for (int i = str.length() - 1; i >= 0; i--) {char ch =str.charAt(i);if (!list.contains(ch)) {
list.add(ch);
}
}for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
}
}public static void readOrder3(intnum) {//方法3:使用一个下标标示0-9的整数数组,值作为存在标记
StringBuilder sb = newStringBuilder();int[] arr = new int[10];while (num > 0) {int s = num % 10;if (arr[s] == 0) {
arr[s]= 1;
sb.append(s);
}
num/= 10;
}
System.out.println(sb.toString());
}public static void readOrder4(intnum) {//方法4:使用栈
Stack stack = newStack();
String str=String.valueOf(num);for (int i = str.length() - 1; i >= 0; i--) {char ch =str.charAt(i);if (!stack.isEmpty()) {if (!stack.contains(ch)) {
stack.add(ch);
}
}else{
stack.push(ch);
}
}
Iterator iterator=stack.iterator();while(iterator.hasNext()) {
System.out.print(iterator.next());
}
}
}