题目描述:
给定一个k位整数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
思路:
首先被好长的公式给吓到了哎!!!但是读完题,它的意思就是给一个数让你统计这个数中不同个位数出现的次数,这个记次数的思路很常见的,就是把给定的数字化为一个个字符,把这些字符存放到list中,每喷爱国到一个相同的数字值就加1,最后将list集合输出
输入描述:
一个不超过1000位的正整数N
输出描述:
对N中每个不同的个位数字,以D:N的格式在一行中输出该位数字D和出现次数N,要求按D的升序输出
示例:
输入199003
输出:
0:2
1:1
3:1
9:2
代码展示:
package com.bittech;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* package:com.bittech
* Description:NumCounts
* @date:2019/6/3
* @Author:weiwei
**/
public class NumCounts {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字: ");
String N = sc.next();
char [] chars = N.toCharArray();
/**
* 创建list,10个item(0-9),每个item得值表示数字的个数,
*/
List<Integer> list = new ArrayList<>();
for(int i =0;i<10;i++){
list.add(0);//初始化为0
}
for(int i = 0;i<chars.length;i++){
//每次遇到一个数字,数字就加1
list.set(chars[i]-'0',list.get(chars[i]-'0')+1);
}
for(int i =0;i<list.size();i++){
if(list.get(i)>0){
System.out.println(i+":"+list.get(i));
}
}
}
}