当我们遇到这种问题的时候,如果我们挨个遍历再分情况讨论的话要讨论的情况就比较复杂,因此我们可以尝试将每个数转化成字符串的方式来解决,比如110,转化成字符串后我们就可以挨个遍历出1的个数,代码如下
public int NumberOf1Between1AndN_Solution(int n) {
int count=0;//初始化1的个数
for(int i=1;i<=n;i++){
String str=String.valueOf(i);//转化为字符串
char[] chars=str.toCharArray();
for(char c:chars){
if(c=='1'){count++;}
}
}
return count;
}