首页 > 代码库 > 233. Number of Digit One *HARD* -- 从1到n的整数中数字1出现的次数
233. Number of Digit One *HARD* -- 从1到n的整数中数字1出现的次数
Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.
For example:
Given n = 13,
Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.
Hint:
- Beware of overflow.
class Solution {public: int countDigitOne(int n) { if(n <= 0) return 0; vector<int> v; int t = n; while(t) { v.push_back(t%10); t /= 10; } int l = v.size(), rest = n - v[l-1] * pow(10, l-1); return (v[l-1] > 1 ? pow(10, l-1) : rest + 1) + v[l-1] * (l-1) * pow(10, l-2) + countDigitOne(rest); }};
233. Number of Digit One *HARD* -- 从1到n的整数中数字1出现的次数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。