/**
* 题目:
* 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?
* 为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,
* 但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,
* 可以很快的求出任意非负整数区间中1出现的次数。
* */
/**
* 理解题意:
* 题目要求计算1~n中,1出现的次数,特别注意的是,11中1出现的次数是2次,
* 所以不能将输入的整数直接转换成字符串后判断字符串是否包含1,str.contains("1");
* 而是要先将字符串转为字符数组,然后对每个字符判断是否为1,做累计
* */
/**
* 解题思路:
* 输入:整数n;
* 输出:1~n中'1'出现的次数;
* 先来个1到n的for循环,每个循环里面,
* 将每个整数转为字符串,对字符串中的每个字符判断,如果包含1,count++
* */
public class NumberOf1Between1AndN {
public int NumberOf1Between1AndN_Solution(int n) {
String str = "";
int result = 0;
for(int i=1; i<=n; i++){
str = i+"";
for(int j=0; j<str.length(); j++){
if(str.charAt(j) == '1'){
result ++;
}
}
}
return result;
}
public static void main(String[] args) {
NumberOf1Between1AndN num = new NumberOf1Between1AndN();
int n = 13;
int result = num.NumberOf1Between1AndN_Solution(n);
System.out.println(result);
}
}
输出:
6