233. 数字 1 的个数
模拟

class Solution {public:int getnum(string& str, int l, int r) {int res = 0;for (int i = l; i <= r; i++) {res = res * 10 + str[i] - '0';}return res;}int countDigitOne(int n) {string nums = to_string(n);int res = 0, len = nums.size();for (int i = 0; i < len; i++) {if (i > 0) { // 如果枚举的是最高位,那么不考虑前半部分res += getnum(nums, 0, i - 1) * pow(10, len - i - 1);}if (nums[i] == '1') res += getnum(nums, i + 1, len - 1) + 1;else if (nums[i] > '1') res += pow(10, len - i - 1);}return res;}};
数位DP
…
