【前端笔试题】给定数字N,求从1到N中间0出现的次数

给定数字N,求从1到N中间0出现的次数

这道题来自于自己真实笔试,现在总结到博文,算是给自己的再一次复习吧,另外也可以与大家分享


思路

这道题我的思路是,写一个function,参数为N,先遍历循环N次,拿到每个数,然后再把每个数字转化成字符串形式,再对该字符串遍历循环,用charAt()取到每一个字符串的字符与0比较是否相等,相等次数加1。

代码:

function fn(n) {
    var count = 0; // 记个数
    for (var i = 1; i <= n; i++) {
        // 数字转字符串
        var str = i.toString();
        for (var j = 0; j < str.length; j++) {
            // 比较
            if (str.charAt(j) == 0) {
                count++;
            }
        }
    }
    return count;
}

测试:

document.write(fn(11)); // 结果为1

当然我们可以稍微改下参数,让题目变得灵活,我们可以给定数字N,求1到N中,某个数字出现的次数。这里我将某个数字参数定为 target

function fn(n,target) {
    var count = 0; // 记个数
    for (var i = 1; i <= n; i++) {
        // 数字转字符串
        var str = i.toString();
        for (var j = 0; j < str.length; j++) {
            // 比较
            if (str.charAt(j) == target) {
                count++;
            }
        }
    }
    return count;
}

测试也是一样的,传参就好。

上面的方法实现应该是比较基础的,我相信其他朋友肯定有更好的方法,欢迎交流学习指正


咳咳,还是那句话

还是要不断学习,因为自己还很年轻

你可能感兴趣的:(前端笔试题)