算法入门篇——回文数

问题

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

(目标时间:10分钟)

如果把某个数的各个数字按相反的 顺序排列,得到的数和原来的数相同,则 这个数就是“回文数”。譬如 123454321 就是一个回文数。

分析

由于该数的二进制表示,最高位不可能是0,只能为1,所以最低位也应该为1,所以,这个数是个奇数。从11开始寻找奇数滤出符合条件的即可。

实现

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
swift3版:

var x = 11
while true {
    if  String(x) == String(Array(String(x).characters).reversed()) &&
        String(x, radix:8) == String(Array(String(x, radix:8).characters).reversed()) &&
        String(x, radix:2) == String(Array(String(x, radix:2).characters).reversed()) {
        print(x)    // result: 585
        break
    }
    x += 2
}

swift4版:

var x = 11
while true {
    if  String(x) == String(x).reversed() &&
        String(x, radix:8) == String(x, radix:8).reversed() &&
        String(x, radix:2) == String(x, radix:2).reversed() {
        print(x)    // result: 585
        break
    }
    x += 2
}
如果有更好的实现,请在下面留言,谢谢!

你可能感兴趣的:(算法入门篇——回文数)