给你两个 正整数 a
和 b
,返回 闭区间 [a, b]
内各位数字都不同的数字个数。
示例 1:
输入:a = 1, b = 20 输出:19 解释:除 11 以外,区间 [1, 20] 内的所有数字的各位数字都不同。因此,答案为 19 。
示例 2:
输入:a = 9, b = 19 输出:10 解释:除 11 以外,区间 [1, 20] 内的所有数字的各位数字都不同。因此,答案为 10 。
示例 3:
输入:a = 80, b = 120 输出:27 解释:区间 [80, 120] 内共有 41 个整数,其中 27 个数字的各位数字都不同。
提示:
1 <= a <= b <= 1000
class Solution {
public int numberCount(int a, int b) {
int count = 0,flag;
int[] num = new int[10];
for(int i = a; i <= b ;i++){//遍历每一个数
flag = 0;
Arrays.fill(num,0);
String s = Integer.toString(i);
if(s.length()==1){//若为0-9,则直接加一并跳过
count++;
continue;
}
for(int j = 0;j<s.length();j++){//将数字转换为字符拆分
int n = s.charAt(j)-48;
num[n]++;//用桶将每个数字装起来
if(num[n]>=2){//当出现两次时,说明不是要求的数字
flag=1;
break;
}
}
if (flag==0) {//判断是否为要求数字
count++;
}
}
return count;
}
}