为了账号安全,请及时绑定邮箱和手机立即绑定

js的面试题

js的面试题

西兰花伟大炮 2017-04-06 00:16:55
用两种方法实现找出1到1000之间的对称数,如121,2882
查看完整描述

4 回答

已采纳
?
千秋此意

TA贡献158条经验 获得超187个赞

function isSymmetrically(number) {
    return number >= 10 && number.toString().split('').reverse().join('') === number.toString();
}

function isSymmetrically(number) {
    return number >= 10 && Number((function(s) { // 此处由于非尾递归性能可能稍微有所降低~
        return !s.length ? '' : arguments.callee(s.slice(1)) + s[0];
    })(number.toString())) === number;
}

其实就何楼上说的差不多,主要就是数字反转之后和原数字相等就行了(同时排除10以下数字),循环的方法楼上都有几种了,我这里写了一个数组方法反转一个递归调用反转的方法~

查看完整回答
3 反对 回复 2017-04-06
?
qq_驰兮_0

TA贡献4条经验 获得超3个赞


//方法1
        for(var i=1;i<10;i++){
            for(var j=1;j<10;j++){
                if(i==j){
                    console.log(i*10+j);
                }
            }
        }
        for(var i=1;i<10;i++){
            for(var j=0;j<10;j++){
                for(var z=0;z<10;z++){
                    if(i==z){
                        console.log(i*100+j*10+z);
                    }
                }
            }
        }
        //方法二
        for(var i=1;i<=1000;i++){
            if(check(i)){
                console.log(i);
            }
        }
        function check(i){
            var arr=i.toString().split('');
            if(arr[0]==arr[arr.length-1]&&arr.length>1){
                return true;
            }else{
                return false;
            }
        }


查看完整回答
2 反对 回复 2017-04-06
?
ruibin

TA贡献358条经验 获得超213个赞

很简单。主要是要分类。第一是10~99.十位数和个位数相同就对称了。十位数怎么获取parseInt(str/10);个位数怎么获取 str%10然后等于个位数就取出来。

第二是100到999.主要是获取百位数和个位数相等就行。百位数怎么获取:parseInt(str/100),个位数怎么获取(str%10)。思路已经告诉你了,具体还得自己动手!很多时候,多动手才能学好编程~

查看完整回答
2 反对 回复 2017-04-06
?
ziom

TA贡献948条经验 获得超1109个赞

<script type="text/javascript">
        /* 方法一 */
        // 检查num是否是对称数
        function checkNum(num) {
            num = String(num);
            var length = num.length;
            if (length < 2) return false;
            for (var i = 0; i < Math.floor(length/2); i++) {
                if (num.charAt(i) != num.charAt(length-1-i)) {
                    return false;
                }
            }
            return true;
        }
        for (var i = 1; i <= 1000; i++) {
            if (checkNum(i)) {
                console.log(i);
            }
        }

        /* 方法二 */
        // 传入两个区间值,打印出两数之间的所有对称数
        function printTC(num0, num1) {
            // 这种方式有点复杂,想半天下不了手,我放弃了。。。
        }

    </script>


查看完整回答
1 反对 回复 2017-04-06
?
高jay

TA贡献96条经验 获得超122个赞

1000以内的就简单了,首先就用纯全算法思路,循环1000,if(i<100)i除以10向下取整如果等于i除以10的余数输出i i>100就改成i除以100向下取整跟除以10的余数相等输出i。第二种就是字符串思路,小于100字符串切割前两位相等输出,大于100第一位跟第三位相等输出。
查看完整回答
1 反对 回复 2017-04-06
?
ziom

TA贡献948条经验 获得超1109个赞

2882在1-1000间吗

查看完整回答
1 反对 回复 2017-04-06
点击展开后面1
  • 4 回答
  • 3 关注
  • 2393 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信