java 233.数字一(#)的数量.java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 233.数字一(#)的数量.java相关的知识,希望对你有一定的参考价值。

public int countDigitOne(int n) {
  int count = 0;
    
  for (long k = 1; k <= n; k *= 10) {
    long r = n / k, m = n % k;
    // sum up the count of ones on every place k
    count += (r + 8) / 10 * k + (r % 10 == 1 ? m + 1 : 0);
  }
    
  return count;
}
public class Solution {
    public int countDigitOne(int n) {

        if (n <= 0) return 0;
        int q = n, x = 1, ans = 0;
        do {
            int digit = q % 10;
            q /= 10;
            ans += q * x;
            if (digit == 1) ans += n % x + 1;
            if (digit >  1) ans += x;
            x *= 10;
        } while (q > 0);
        return ans;

    }
}

以上是关于java 233.数字一(#)的数量.java的主要内容,如果未能解决你的问题,请参考以下文章

java 233.数字一(#)的数量.java

java 233.数字一(#)的数量.java

java 233.数字一(#)的数量.java

java 233.数字一(#)的数量.java

用于验证数字逗号分隔值的 Java 正则表达式

动态规划-数位dp-233. 数字 1 的个数