题目
这条街一共有 20202020 位住户,门牌号从 1 到 20202020 编号
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次
粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7
要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2
从1 开始到 n 号时,使用某一个字牌 number 需要的个数
解题
/**
* 门牌制作
* 这条街一共有 20202020 位住户,门牌号从 1 到 20202020 编号
* 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次
* 粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7
* 要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2
* 从1 开始到 n 号时,使用某一个字牌 number 需要的个数
*
* 要求内存低于128M 速度要 1s 以内
* (临时内容不做存储可节省空间)
*/
public static void doorCardNumberMake(int n, int number){
if (n < 1){
System.out.println("n 不能小于 1");
}
int sumNumber = 0;
for (int i = 1; i <= n; i++){
String[] split = String.valueOf(i).split("");
for (String numberStr : split) {
if (numberStr.equals(String.valueOf(number))){
sumNumber += 1;
}
}
}
System.out.println("从 1 开始到 " + n + " 需要牌号 " + number + " 共 " + sumNumber + " 个");
}