233. Number of Digit One leetcode
来源:互联网 发布:sql select 中文 编辑:程序博客网 时间:2024/05/21 10:34
看了网上的文章,写的一点都不简洁,还是自己写的代码好懂
class Solution {
public:
int countDigitOne(int n) {
vector<int> v;
//先将n的数字分割开
while(n)
{
v.push_back(n%10);
n/=10;
}
int vn=v.size();
int sum=0;
//根据分割开的数字a进行判断,如果不是1的话,则该位置上的1的个数为pow(10,i);
//如果是1的话就是后面几位的数的和,比如154,则在百位上1的个数就是54+1,但是这里会漏掉一些1,
//举个例子吧,比如21345,我先计算的是1~20000之间的1的个数,是10000+2*10000(个位上)+200*100(百位)+20*1000(千位)(因为为1的时候有10个,为2的时候有10个)
//然后是1345,首先得加上千位上的346个+999+345的1的个数
for(int i=vn-1;i>=0;i--)
{
if(v[i]>1)
{
sum+=pow(10,i);
int j=i;
while(j--)
{
sum+=pow(10,i-1)*v[i];
}
}
if(v[i]==1)
{
sum++;
int x=0;
int y=0;
for(int j=0;j<=i-1;j++)
{
x+=v[j]*pow(10,j);
y+=9*pow(10,j);
}
sum+=x;
sum+=countDigitOne(y);
}
}
return sum;
}
};
- [leetcode] 233.Number of Digit One
- [LeetCode]233.Number of Digit One
- [leetcode] 233. Number of Digit One
- leetcode 233. Number of Digit One
- [LeetCode]233. Number of Digit One
- LeetCode 233. Number of Digit One
- leetcode.233. Number of Digit One
- LeetCode-233.Number of Digit One
- 233. Number of Digit One leetcode
- [LeetCode]233. Number of Digit One
- 【LeetCode】233. Number of Digit One
- Leetcode 233. Number of Digit One
- leetcode 233. Number of Digit One
- [leetcode]233. Number of Digit One
- leetcode 233. Number of Digit One
- leetcode 233. Number of Digit One
- Number of Digit One 【leetcode】
- [leetcode] Number of Digit One
- socket研究
- [又值奥运季] 2016年里约奥运会--8月12日赛事
- java实现微信新增永久视频素材
- Android 5.x系统nfs挂载系统启动记录 nfs挂载文件记录
- Date
- 233. Number of Digit One leetcode
- 前端性能优化
- python2.x与 python3.x之间的差别
- 二分图
- ruby on rails界面常用控件写法以及rails常用方法
- apache/nginx 开启rewrite模块,实现链接的跳转/nginx上使用TP框架
- MyEclipse安装插件的三种方法和使用心得 - loleina - 博客园
- PHP学习笔记
- Python 学习笔记(三):文件,高级特性,枚举,正则表达式,模块