zoukankan      html  css  js  c++  java
  • 面试题32 整数中1出现的次数(从1到n整数中1出现的次数)

    题目描述

    求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。
     1 class Solution {
     2 public:
     3     int NumOf1(const char* strN){
     4         if (!strN || *strN < '0' || *strN > '9' || *strN == ''){
     5             return 0;
     6         }
     7         int first = *strN - '0';
     8         unsigned int l = static_cast<unsigned int>(strlen(strN));
     9         if (l == 1 && first == 0)
    10             return 0;
    11         if (l == 1 && first > 0)
    12             return 1;
    13         int numberFirst = 0;
    14         if (first > 1)
    15             numberFirst = pow(10, l - 1);
    16         else if (first == 1)
    17             numberFirst = atoi(strN + 1) + 1;
    18         int numberOther = first * (l - 1) * pow(10, l - 2);
    19         int numberRecur = NumOf1(strN + 1);
    20         return numberFirst + numberOther + numberRecur;
    21     }
    22     
    23     int NumberOf1Between1AndN_Solution(int n)
    24     {
    25         if (n < 0){
    26             return 0;
    27         }
    28         char strN[50];
    29         sprintf(strN, "%d", n);
    30         return NumOf1(strN);
    31     }
    32 };
  • 相关阅读:
    字符串方法
    函数的属性和方法
    数组的去重!!
    常见的数组方法
    JS中的函数
    JavaScript 中表达式和语句的区别
    运算符优先级
    题解 CF813B 【The Golden Age】
    题解 CF834B 【The Festive Evening】
    题解 CF810B 【Summer sell-off】
  • 原文地址:https://www.cnblogs.com/wanderingzj/p/5357830.html
Copyright © 2011-2022 走看看