题目的链接在这里:https://www.nowcoder.com/practice/bd7f978302044eee894445e244c7eee6
题目大意
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数 例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次一、示意图
二、解题思路
暴力判断 字符串和Integer
暴力判断
代码如下:
public class Solution {
public int NumberOf1Between1AndN_Solution(int n) {
//从1到n 整数中 1出现的次数 第一种方法肯定是一个一个暴力判断
int res=0;
for(int i=1;i<=n;i++){
res+=getOne(i);
}
return res;
}
/**
* 求i中包含1的个数
* @param i
* @return
*/
private int getOne(int i) {
int num=0;
while (i!=0){
int temp=(i%10);
if(temp==1){
num++;
}
i/=10;
}
return num;
}
}
字符串和Integer
代码如下:
public class Solution {
public int NumberOf1Between1AndN_Solution(int n) {
//从1到n 整数中 1出现的次数 第一种方法肯定是一个一个暴力判断
int res=0;
for(int i=1;i<=n;i++){
//把每个数都转化为字符串
String s = Integer.toString(i);
char[] chars = s.toCharArray();
for(int num=0;num<chars.length;num++){
if(chars[num]=='1'){
res++;
}
}
}
return res;
}
}