整数中1出现的次数(题解)
整数中1出现的次数(从1到n整数中1出现的次数)
http://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6
题解:
核心思路:
链接:
从 1 至 10,在它们的个位数中,任意的 1 都出现了 1 次。
从 1 至 100,在它们的十位数中,任意的 1 都出现了 10 次。
从 1 至 1000,在它们的百位数中,任意的 1 都出现了 100 次。
抓住这个规律,就可做题,这是一版根据上面思路实现的,比较容易理解,可以参考
public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int ans = 0; for(int i = 1;i<=n;i *= 10){ int m1 = n / (i* 10),m2 = n % (i* 10); int base = i; if(m2 >= 2 * base){ ans += base; } else if(m2 < base){ ans += 0; } else{ ans += m2 - base + 1; } ans += m1 * base; } return ans; } }