题解 | #牛的回文编号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
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务