回文趣题

回文数举例: 1234321

问题: 求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数10的最小值

分析:突破口最简单的二进制开始,首先二进制首位不能为0,根据回文数字的特点可得末位肯定为1,那么这个数字肯定是基数

方法: Number.toString(radix) 返回相应得进制数字 

            Number.toString(radix).split('')  传 ‘’  空字符串可将字符串得每一个字符切分到数组中

            Number.toString(radix).split('').reverse().join('')  利用数组得reverse反转后再用join转为字符串

            判断两个字符串是否相等即可 

            有更好方法?实用性 ?缺陷?

        let min = 11
        function isHuiwen(num, radix = 10) {
            return reverseNum(num, radix) === num.toString(radix)
        }
        function reverseNum(num, radix) {
            return num.toString(radix).split('').reverse().join('')
        }
        function findMin(min) {
            let finded = false
            while (!finded) {
                if (isHuiwen(min) && isHuiwen(min, 2) && isHuiwen(min, 8)) {
                    finded = true
                    return min
                } else {
                    min += 2
                }
            }
        }
        console.log(findMin(11)) // 585

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值