JZ31 整数中1出现的次数(从1到n整数中1出现的次数)
题目描述:
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数
例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次
示例:
输入:
13
返回值:
6
题解:
方法:暴力法
1.思路
直接构建一个函数,他的功能就是输入一个数,返回它这个数中1的个数。
然后1-n都遍历一次。
2.复杂度:
时间复杂度:O(
n
2
n^2
n2)
空间复杂度:O(1)
3.代码:
public class Solution {
public int NumberOf1Between1AndN_Solution(int n) {
// int res = 0;
// for(int i=1; i<=n; i++){
// res += Count1(i);
// }
// return res;
// 优化:不用构建函数直接遍历
int res = 0;
for(int i=n; i>0; i--){
for(int j=i; j>0; j/=10){
if(j%10==1) res++;
}
}
return res;
}
int Count1(int t){
int res = 0;
while(t > 0){
if(t%10==1){
res++;
}
t = t/10;
}
return res;
}
}