1. 题目
2. 题解
整体来说,题目还是较为简单的,首先可以知道负数必不是回文数,小于10的整数必是回文数,其余的情况可通过如下两种方式进行判断:
1)栈的方式,看到题目的第一个瞬间我想起了经典的括号匹配问题,想到了用栈的数据结构来解决。
2)相同数字的位置关系,对称数字的索引相加 == 数字的位数-1。
整体考虑后,由于Go不像C++一样直接提供栈的数据结构,而本题也与括号匹配不同,没有无关的字符,所以最终使用了方法2)
代码实现如下(Go语言)
func isPalindrome(x int) bool {
//首先负数必然不是回文数
if x < 0 {
return false
}
//小于10的整数必然是回文数
if x < 10 {
return true
}
//其余情况以栈的方式判断, 或者已知对称位置的字符索引相加等于字符串长度-1
str := strconv.Itoa(x)
l := len(str)
r := l/2
for i:=0; i<=r; i++{
if str[i]!=str[l-i-1]{
return false
}
}
return true
}
提交结果如下