首页 > 学院 > 开发设计 > 正文

题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。

2019-11-10 18:45:44
字体:
来源:转载
供稿:网友
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。

分析:这是一道广为流传的google面试题。

别人分享个题目给我,如上。

    PRivate static void testOneNumber() {        Integer s = 11;        int result = 0;        String tempString;        char[] temp;        String one = "1";        char oneChar = '1';        for (Integer i = 1; i < s + 1; i++) {            tempString = i.toString();            temp = tempString.toCharArray();            if (tempString.contains(one)) {                for (char aTemp : temp) {                    if (oneChar == aTemp) {                        result++;                    }                }            }        }        System.out.println(result);    }

然后,测试代码如上,运行结果如下

对于其他的数字,自己把代码整下来,自己测试一下就OK拉。

思路:1.为什么要用Integer而不是int?因为,这个是对象,而int是基本类型,差别就在对象是有很多方法可以使用的。2.数据类型之间的转换Integer可以直接toString成字符串,字符串又可以直接toCharArray,然后就变成了char数组,char数组之后,就可以挨个的比较字符啦。char类型的比较可以只等用 == ,而不是字符串的需要equal方法。3.关于算法因为,我对算法这个还没研究,时间复杂度啥的,真的不是很清楚怎么在处理。所以这个处理方式,是个嵌套for循环。效率上可能不是好。但是其他的好的方法,暂时还是没有想到哟。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表