L1-003 个位数统计
🏅前言:
代码含详细注释及解题思路。若有不理解的地方,欢迎大家探讨交流,有问必回📖
L1-003 个位数统计
给定一个 k 位整数 N=d**k−110k−1+⋯+d1101+d0 (0≤d**i≤9, i=0,⋯,k−1, d**k−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
输入格式:
每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。
输出格式:
对 N 中每一种不同的个位数字,以
D:M
的格式在一行中输出该位数字D
及其在 N 中出现的次数M
。要求按D
的升序输出。输入样例:
100311
输出样例:
0:2 1:3 3:1
🎯解题思路:
🦀首先输入的利用字符串存储:
【原因是输入样例是1000位
正整数,只能使用String或BigInteger存储】
🦀其次定义一个长度为10的数组,下标0-9,默认初始值为0.
🦀最后每次取出字符串的一个字符的数字值与下标0-9比较,如果相等,就对应下标自增1
🎀题解:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String N=sc.next();
//由于题目中要求存储1000位数字,int,long存不下。所以使用String存储
int[] a=new int[10];//计算数字的个数
for (int i = 0; i <N.length() ; i++) {
for (int j = 0; j <10 ; j++) {
//第一种判断方法:
if((N.charAt(i)-'0')==j){
a[j]++;
}
//第二种判断方法:
/*if(Integer.parseInt(N.charAt(i)+"")==j){
a[j]++;
}*/
}
}
for (int i = 0; i <10 ; i++) {
if(a[i]!=0)
System.out.println(i+":"+a[i]);
}
}
}