题目描述
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数
例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次
示例
输入
13返回值
6
思路
1、首先把数字转换成string
2、然后不停的找string中的1,比如1234512,用indexOf找到第一个出现1的地方是下标为0,那么结果+1.然后把1234512拆成234512继续找1,直到找不到1为止,就找下一个
代码
JavaScript slice() 方法(返回新数组)
function NumberOf1Between1AndN_Solution(n) {
// write code here
if (n <= 0) {
return 0;
}
if (n == 1) {
return 1;
}
let ans = 1
for (let i = 2; i <= n; i++) {
let temp = i.toString();
while (temp.indexOf('1') >= 0) {
ans++;
temp = temp.slice(temp.indexOf('1') + 1);
}
}
return ans;
}
运行环境:Javascript_V8
运行时间:17ms
占用内存:7364KB