问题
求用十进制、二进制、八进制表示都是回文数的所有数中,大于十进制数 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
}
网友评论