题目来源
https://www.nowcoder.com/questionTerminal/a2063993dd424f9cba8246a3cf8ef445
题目描述
给定一个k位整数N = dk-110k-1 + … + d1101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。
输入描述:
每个输入包含1个测试用例,即一个不超过1000位的正整数N。
输出描述:
对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。
示例1
输入
100311
输出
0:2
1:3
3:1
解题思路
- 给定一个数,它的每一位数字的范围一定在[0,9]这个闭区间上。 并且要同时输出数字和此数字所对应出现的次数。
- 创建一个长度为
10
的数组,默认初始化都为0;将数组下标当做要输出的数字,下标对应的数据存放该下标在String中出现的次数。 - 最后依次输出出现次数不为0的下标和其对应的数据即可。
实现代码
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next(); //1.拿到要判断的字符串
int n =s.length();
int[] a = new int[10]; //2.创建下标为[0,9]的数组
//3.遍历字符串
for(int i = 0;i < n;i++) {
//逐个取出字符串的每一位,通过-'0'操作将char->int
a[s.charAt(i)-'0']++; //3.1增加对应下标的个数
}
//4.输出数组中在字符串里出现过的下标和其出现次数
for(int i = 0;i < a.length;i++) {
if(a[i] != 0){
System.out.println(i+":"+a[i]);
}
}
}
}