题解 | #提取不重复的整数#
提取不重复的整数
http://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1
解题思路:
既然是从右向左读取每一位上的数,可以采用取模和取商来获取“当前个位”上的数字和更新数字。每次将输入结果num % 10就可以获得当前num个位上的数字,实现从右向左;然后更新num = num / 10,这样下次取得“个位”,实际是之前的十位;依次类推,直到num=0,表示将所有位的数字都取出了。
将数字放到Set集合当中,这样可以避免重复,也是降重经常考虑的方式。
import java.util.Scanner; import java.util.Set; import java.util.HashSet; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num = scan.nextInt(); Set<Integer> set = new HashSet<>(); int count = 0; while(num != 0) { int last = num % 10; if(!set.contains(last)) { set.add(last); count = count * 10 + last; } num = num / 10; } System.out.println(count); } }