algorithm - 使用 1 位变量确定数字是否为数字回文

标签 algorithm bit-manipulation

我在一个展示 Google 面试问题的网站上看到了这个问题。

我不知道如何解决这个问题。

如果允许我们保留一些其他变量,那么我建议保留 2 个索引,1 个指向开头,另一个指向结尾。然后使用位变量来比较它们中的两个(通过位操作)。

但是如果我们不允许再使用任何变量,我不知道如何解决它。

最佳答案

要使 2n 位的数字成为回文,位置 i 处的每一位必须等于索引 (2n-i) 处的位。 使用异或(XOR)单个位可以很容易地进行比较: a XOR b == 1 当且仅当位 a 和 b 不相等时。 因此,当一个人以这种方式比较每一对对应的位(见上文)并通过对所有单位比较结果进行或运算来构建结果时,回文数将为 0,任何其他数字将为 1。

关于algorithm - 使用 1 位变量确定数字是否为数字回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19745375/

相关文章:

algorithm - 是否可以使用对伪随机选择的 IP 地址的 ping 生成真正的随机数?

c# - 将整数中的一位与另一位交换,代码不起作用

c - 返回 64 位整数中所有设置位的位置的最快方法是什么?

java - 仅使用按位运算符计算 16 的指数

c - 如何解决我的位移 C 代码中的以下错误?

java - java中的Euler Project 5,为什么有不同的结果?

python - 使用 Python 进行快速排序

python - 寻找相关矩阵

c# - 寻找矩形的算法

python - 如何反转按位或运算?