您的位置:首页 > 编程语言 > Java开发

算法设计:统计数字问题

2017-11-01 09:41 323 查看
声明:代码仅用于新手交流,不足之处请多包涵;

      有问题请微信 sjh19960326

问题分析:

要求:输入一个正整数n(n>1);

      计算1~n的所有整数,一共用到了多少次0,1,2,3,4,5,6,7,8,9;

      整数6用6表示,而不是06,006等。

样例输入:11

样例输出:数字:0,1,2,3,4,5,6,7,8,9

                    次数:1,4,1,1,1,1,1,1,1,1

分析:1 新建一个长度为10的整形数组,分别存储0~9总共出现的次数;
索引n对应的值就是数字n出现的次数;

        int[] times = new int[10];

      2 遍历1~n,将得到的数字拆解成单位数,存入另一个整形数组;

        然后遍历得到的整形数组,得到n,则将times数组的n索引的值加一;
for(int i=1;i<=num;i++) {
String str = String.valueOf(i);
char[] cs = str.toCharArray();
for(int j=0;j<cs.length;j++) {
char[] chs = {cs[j]};
String temp = new String(chs);
int rel = Integer.valueOf(temp);
times[rel]++;
}
}

      3 遍历times数组,输出结果;
for(int i=1;i<=num;i++) {
String str = String.valueOf(i);
char[] cs = str.toCharArray();
for(int j=0;j<cs.length;j++) {
char[] chs = {cs[j]};
String temp = new String(chs);
int rel = Integer.valueOf(temp);
times[rel]++;
}
}

代码实现:

@Test
public void fn1_1_1() {
int num = new Scanner(System.in).nextInt();
//times存储0~9分别出现的次数,
int[] times = {0,0,0,0,0,0,0,0,0,0};
//核心算法,
for(int i=1;i<=num;i++) {
String str = String.valueOf(i);
char[] cs = str.toCharArray();
for(int j=0;j<cs.length;j++) {
char[] chs = {cs[j]};
String temp = new String(chs);
int rel = Integer.valueOf(temp);
times[rel]++;
}
}

System.out.print("数字: ");
for (int i = 0;i<10;i++) {
System.out.print(i+", ");
}
System.out.println();
System.out.print("次数:");
for (int i : times) {
System.out.print(i+", ");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息