【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);
}
}