Created
August 27, 2014 23:28
-
-
Save jikeytang/5dc420cefb948c9ad244 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140828-题目1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
有个函数,他有2个参数a和b, 实现主要的功能是计算出1在a和b之间出现的次数, | |
比如:a=1024,b=1032,那么a和b之间的数就是: | |
1024 1025 1026 1027 1028 1029 1030 1031 1032 | |
则有10个1出现在这些数中,那么函数返回的值就是10。 | |
PS: | |
1. 回复时注意加上下面这句话,才会有语法高亮或格式缩进。 | |
```javascript | |
// you code | |
``` | |
2. 粘贴代码时请使用shift+tab,缩进前面的空白。 |
/*
* 统计1到num中1出现的次数
*/
function countOne(num) {
var count = 0; // 统计总数
var factor = 1; // 基数,用于控制当前位数
var lowerNum = 0; // 比当前位数低的数字
var currNum = 0; // 当前位数的数字
var higherNum = 0; // 比当前位数高的数字
while (parseInt(num / factor) !== 0) {
lowerNum = num - parseInt(num / factor) * factor;
currNum = parseInt(num / factor) % 10;
higherNum = parseInt(num / (factor * 10));
//console.info("currNum="+currNum+",lowerNum="+lowerNum+",higherNum="+higherNum);
switch (currNum) {
case 0:
count += higherNum * factor;
break;
case 1:
count += higherNum * factor + lowerNum + 1;
break;
default:
count += (higherNum + 1) * factor;
break;
}
factor *= 10;
}
return count;
}
/*
* 统计a到b中1出现的次数
* a < b
*/
function countOneBetween(a, b) {
return countOne(b) - countOne(a - 1);
}
var a=1024, b=1032;
console.log(countOneBetween(a, b));
function countOne(a, b) {
return new Array(b-a+1).join().split(',').map(function(v, i) {return a+i;}).join('').split('1').length-1;
}
var a = 1024, b = 1032;
countOne(a, b)
function show(a, b, num){
var arr = new Array(b-a+1);
// arr.forEach(function( v, i , a ){ a[i] = i ;});
for( var i= 0; i < b-a+1; i ++ ){
arr[i] = a + i ;
}
console.log(arr.join('').split('').filter(function(v){ return v == 2}).length)
};
show(2001, 2092, 2 )
function countOneBetween(n,m){
var counter = 0,
number;
for (var i=n;i<=m ;i++ ){
number = i;
do{
if (number%10==1){
counter++
}
number = parseInt(number/10);
}
while (number>0);
}
return counter;
}
console.log(countOneBetween(1024,1032))
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
function show(a,b){
var str='';
for(var i=a;i<=b;i++){
str+=i;
}
return str.match(/1/g).length;
}
var s=show(1024,1032);
alert(s);