题目描述:
给定一个k位整数N=dk−1∗10k−1+...+d1∗101+d0(0<=di<=9,i=0,...,k−1,dk−1>0)N=dk−1∗10k−1+...+d1∗101+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的升序输出。
输入样例:
100311
输出样例:
0:2
1:3
3:1
基本思路:
(1)以count [ ] 数组来记录0到9出现的次数,数组下标为0到9之间的数字,值即为出现次数
(2)获取到输入的字符串 s 后,调用s.length得到长度,遍历每一位,s.charAt(i)-'0' 是先获取到此时该位的字符,再将其转为数字,count[ s.charAt(i)-'0'] 即为该数字出现的次数
代码走起~
package pat;
import java.util.Scanner;
//个位数统计
public class B1021 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String s = sc.next();
int count[] = new int[10];
int length = s.length();
for (int i = 0; i < length; i++) {
count[s.charAt(i) - '0']++;
}
// 输出
for (int i = 0; i < 10; i++) {
if (count[i] != 0) {
System.out.println(i + ":" + count[i]);
}
}
}
}