题解 | #牛的回文编号III#
牛的回文编号III
https://www.nowcoder.com/practice/6af8b6e39b004329a48cc2cd823e5b30
package main
import ("strconv"
"fmt"
)
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param x int整型
* @return bool布尔型
*/
func isPalindromeNumberIII( x int ) bool {
// write code here
// 对于负数,将其视为补码形式的二进制数
if x < 0 {
// 取反
x = -x - 1
// 将负数的补码形式转换为二进制字符串
binaryStr := strconv.FormatUint(uint64(x), 2)
// 补0操作,使二进制字符串长度为32位
binaryStr = fmt.Sprintf("%032s", binaryStr)
// 使用双指针判断二进制字符串是否为回文数
i, j := 0, len(binaryStr)-1
for i < j {
if binaryStr[i] != binaryStr[j] {
return false
}
i++
j--
}
return true
}
// 对于非负数,将其转换为二进制字符串
binaryStr := strconv.FormatInt(int64(x), 2)
// 补0操作,使二进制字符串长度为32位
binaryStr = fmt.Sprintf("%032s", binaryStr)
// 使用双指针判断二进制字符串是否为回文数
i, j := 0, len(binaryStr)-1
for i < j {
if binaryStr[i] != binaryStr[j] {
return false
}
i++
j--
}
return true
}
华为工作强度 1292人发布