【LeetCode】刷题总结

【LeetCode 】: 233. 数字 1 的个数

2020-03-09  本文已影响0人  LpSir

233. 数字 1 的个数

问题描述:

给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。

[题目链接](https://leetcode-cn.com/problems/number-of-digit-one/
/])

示例1

输入: 13
输出: 6
解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。

完整代码:

class Solution {
    public int countDigitOne(int n) {
        if(n <= 0) return 0;
        if (n < 10) return 1;
        char c[] = String.valueOf(n).toCharArray();

        int highNum = c[0] - '0';
        int size = c.length;
        int withoutHigh = n - highNum * (int)Math.pow(10 , size - 1);
        int firstCount = highNum == 1 ? (withoutHigh + 1) : (int)Math.pow(10 , size - 1);

        int otherCOunt = highNum * (size - 1) * (int)Math.pow(10 , size - 2);


        return firstCount + otherCOunt + countDigitOne(withoutHigh);
    }
}

附加GitHub链接

上一篇下一篇

猜你喜欢

热点阅读