Loading... 给定一个 $k$ 位整数 $N=d_{k-1}10^{k-1}+…+d_110^1+d_0(0\leq d_i\leq 9,i=0,…,k_{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 ``` --- ## 分析 首先是 N 的存储,怎么想也没法用 int 存储吧,就算是 long ,最多也只能存储 19 位十进制数字。 所以题中给出的 N 我们要做字符串处理,不能用 int 定义。 统计0-9数字在字符串中出现的次数,因此定义一个数组存放0-9出现的次数 输出按D的升序输出,因此次数M大于0的输出次数D:M 处理字符时与'0'的差即为十进制中的数字 --- ``` import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String N = sc.next(); int[] memory = new int[10]; //创建数组用于存储 N 中每位数字出现的次数 for (int i =0;i<N.length();i++){ int n = N.charAt(i) - 48; //将字符转化为十进制数字即与'0'的差 memory[n] += 1; } for (int i = 0;i<memory.length;i++){ if(memory[i]>0){ //判断是否出现该数字,若未出现则不输出 System.out.println(i + ":" + memory[i]); } } } } ``` © From the Internet Like 0 If you think my article is useful to you, please feel free to appreciate