题目
如果整数
x
满足:对于每个数位d
,这个数位 恰好 在x
中出现d
次。那么整数x
就是一个 数值平衡数 。给你一个整数
n
,请你返回 严格大于n
的 最小数值平衡数 。
0 <= n <= 106
解题思路
- 根据n的最大值可以得知最大n的最小数值平衡数;
- 从n+1开始遍历并判断是否为数值平衡树;
代码展示
class Solution { public int nextBeautifulNumber(int n) { //0~10^6 最小平衡数的最大值为为1224444 while (n < 1224444){ n++; if(isBalance(n)){ return n; } } return -1; } public boolean isBalance(int num){ String str = String.valueOf(num); Map<Integer,Integer> data = new HashMap<>(); for (int i = 0; i < str.length(); i++){ int temp = str.charAt(i) - 48; data.put(temp, data.getOrDefault(temp, 0) + 1); } for (Integer i : data.keySet()){ if(!Objects.equals(data.get(i), i)){ return false; } } return true; } }