本文共 1077 字,大约阅读时间需要 3 分钟。
给定一个k位整数N = d_{k-1}×10^{k-1} + ... + d_1×10 + d_0 (其中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
将输入的字符串转换为字符数组,逐个字符统计每个数字出现的次数。由于只关注个位数字(0-9),可以直接遍历每个字符,更新对应的计数器。最后按顺序输出结果。
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sca = new Scanner(System.in); String str = sca.next(); int[] sum = new int[10]; // 数组索引代表数字,值代表出现次数 for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); sum[c - '0']++; // 将字符转换为数字,更新对应的计数器 } for (int i = 0; i < sum.length; i++) { if (sum[i] > 0) { System.out.println(i + ":" + sum[i]); } } }}
Scanner
读取输入的整数字符串。sum
,每个元素对应数字0-9的出现次数。这种方法的时间复杂度为O(n),其中n为输入字符串的长度,能够高效处理长达1000位的整数。
转载地址:http://kbcyz.baihongyu.com/