解题思路 (只供参考,不是最优解 )
- 将输入的数据先转换成二进制数;
- 通过字符串截取将二进制数据存储到集合中;
- 将改集合通过Stream流转化成Map集合,key为数据本身,value为相同数据的和;
- 最后通过循环key和value来获取符合条件的数据;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author Administrator
*/
public class Main {
public static void main(String[] args) {
List<Integer> integerList = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
String binaryString = Integer.toBinaryString(input);
for (int i = 0; i < binaryString.length(); i++) {
integerList.add(Integer.parseInt(binaryString.substring(i, i + 1)));
}
Map<Integer, Long> map =
integerList.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
map.forEach((k, v) -> {
if (k == 1) {
System.out.println(v);
}
});
}
}

京公网安备 11010502036488号