提取不重复的整数

该博客介绍如何输入一个整数,按照从右向左的顺序返回一个不包含重复数字的新整数。由于set集合会自动排序,不适合直接使用,建议使用StringBuilder反向字符串并遍历去除重复数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是 0 。
数据范围: 1 <= n <= 10^8
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

分析:无序不重复,set集合。但是set集合对Integer自然升序排序,所以不能用迭代器遍历set集合

Set<Integer> set = new HashSet<>();
Scanner sc = new Scanner(System.in);
String str = sc.next();
for(int i = str.length()-1 ; i>=0;i--){
    if(set.add(Integer.parseInt(String.valueOf(str.charAt(i))))){
        System.out.print(Integer.parseInt(String.valueOf(str.charAt(i))));
    }
}

/*Iterator iterator = set.iterator();
while(iterator.hasNext()){
    System.out.print(iterator.next());
}*/

还可以用StringBuilder接收控制台的数值,然后调用reverse方法,将字符串反序,然后遍历,索引为0时一定没有重复,如果后面跟前面相同,那么就跳过,反之输出。

Scanner sc = new Scanner(System.in);
StringBuilder str = new StringBuilder();
String s = str.append(sc.nextInt()).reverse().toString();
String res="";
for(int i = 0 ;i<s.length();i++){
    if(!res.contains(String.valueOf(s.charAt(i)))){
        res+=s.charAt(i);
    }
}
System.out.println(res);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值