码迷,mamicode.com
首页 > 编程语言 > 详细

算法导论:计算“1”的个数

时间:2015-04-28 21:00:48      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

  问题如下:给定一个正整数n,统计从1到n的所有整数中出现“1”的个数,如当n=12时,1,2,3,4,5,6,7,8,9,10,11,12中,共有5个“1”;

  下面给出我的暴力求解方法:  

 1 package org.warnier.zhang.demo;
 2 
 3 public class OneCalculator {
 4     
 5     public int calculate(int n) {
 6         int count = 0;
 7         for(int i = 1; i <= n; i++){
 8             int z = i;
 9             while(z != 0){
10                 if(z % 10 == 1){
11                     count++;
12                 }
13                 z /= 10;
14             }
15         }
16         return count;
17     }
18 
19 }

  测试代码如下:

 1 package org.warnier.zhang.demo.test;
 2 
 3 import static org.junit.Assert.*;
 4 import org.junit.Before;
 5 import org.junit.Test;
 6 import org.warnier.zhang.demo.OneCalculator;
 7 
 8 public class OneCalculatorTest {
 9 
10     @Before
11     public void setUp() throws Exception {
12     }
13     
14     @Test
15     public void test_n_equals_1_return_1(){
16         OneCalculator calculator = new OneCalculator();
17         int actual = calculator.calculate(1);
18         int expected = 1;
19         assertEquals(expected, actual);
20     }
21     
22     @Test
23     public void test_n_equals_10_return_2(){
24         OneCalculator calculator = new OneCalculator();
25         int actual = calculator.calculate(10);
26         int expected = 2;
27         assertEquals(expected, actual);
28     }
29     
30     @Test
31     public void test_n_equals_11_return_4(){
32         OneCalculator calculator = new OneCalculator();
33         int actual = calculator.calculate(11);
34         int expected = 4;
35         assertEquals(expected, actual);
36     }
37     
38     @Test
39     public void test_n_equals_12_return_5(){
40         OneCalculator calculator = new OneCalculator();
41         int actual = calculator.calculate(12);
42         int expected = 5;
43         assertEquals(expected, actual);
44     }
45 
46 }

  没多加思考,好像还有更好的解决方式,知道的读者可以贴上代码,交流一下!

算法导论:计算“1”的个数

标签:

原文地址:http://www.cnblogs.com/warnier-zhang/p/4463924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!