zoukankan      html  css  js  c++  java
  • 面试题:1到N中,1出现的次数

     1 #include <iostream>
     2 #include <string>
     3 #include <memory.h>
     4 #include <vector>
     5 #include <sstream>
     6 using namespace std;
     7 
     8 /*
     9 统计1~N之间1出现的次数:分别对当前位的高位和低位找规律。
    10 其实这个问题可以扩展为统计1~N之间,m出现的次数0<=m<=9。
    11 
    12 思路:
    13 对于当前位(出现m的次数):
    14 如果小于m,只和高位有关系如m=1,N=203,那么十位出现的次数就是10~19,110~119;
    15 如果等于m,m=1,N=213,十位出现次数是10~19,110~119,210~213;
    16 如果大于m,m=1,N=223,十位出现次数是10~19,110~119,210~219;
    17 */
    18 //这个函数只求1出现的次数
    19 int fun(int N)
    20 {
    21     if(N < 1)
    22         return 0;
    23 
    24     stringstream ss;
    25     ss<<N;
    26     string s = ss.str();
    27 
    28     int len = s.length();
    29     int i = len - 1;
    30     int cnt = 0;
    31     int num = s[i]-'0';
    32     //处理最低位
    33     if(num > = 1)
    34         cnt = 1;
    35     //处理最高位
    36     stringstream ss1(s.substr(1,len-1));
    37     ss>>num;
    38     cnt += num+1;
    39     for(i = 1 ; i < len-1 ; ++i)
    40     {
    41         num = s[i]-'0';
    42         if(num > 1)
    43         {
    44             int num_higher = s[i-1]-'0';
    45             cnt += (num_higher+1)*10;
    46         }
    47         else if(num == 1)
    48         {
    49             int num_higher = s[i-1]-'0';
    50             int num_lower = s[i+1]-'0';
    51             cnt += (num_higher)*10+num_lower+1;
    52         }
    53         else
    54         {
    55             int num_higher = s[i-1]-'0';
    56             cnt += (num_higher)*10;
    57         }
    58     }
    59     return cnt;
    60 }
    61 
    62 int main()
    63 {
    64     return 0;
    65 }

    未测试版本

  • 相关阅读:
    springMVC-接收数据-参数绑定
    我的asp.net core目录
    我的IdentityServer目录
    win10安装mysql
    asp.net core webapi 生成导出excel
    Dapper, 批量插入,批量更新, 以及in, like
    asp.net core 依赖注入几种常见情况
    asp.net core 2.1 配置管理
    各个模式的accesstoken续期详解
    ResourceOwnerPassword模式使用数据库.
  • 原文地址:https://www.cnblogs.com/cane/p/3867477.html
Copyright © 2011-2022 走看看