在“破解编码面试”一书中,第16章存在一个名为“数字交换器”的问题。
任何人都可以在下图中解释突出显示的行吗?
我已经尝试过使用具有双数据类型的加法和减法方法来解决此问题,效果很好。除此之外,该字符串在xor中不起作用。
那么,它对更多数据类型的作用不仅仅限于整数?哪种数据类型会给加减法带来问题?
答案 0 :(得分:2)
您对浮点数和双打的测试还不够。
如果您尝试使用浮点数1和10'000'000的加法/减法。您将获得10'000'000和0(因为代表制限制)。在这种情况下,Xor也应该可以正常工作。双打的相同问题,但您需要数字之间的更大差异(我认为1和1e16)。有些语言可能会处理这些情况。
对于字符串,您需要使它们的长度相等,然后逐字节应用xor。
总而言之,按位异或将在可以应用的所有情况下为您提供正确的答案。
答案 1 :(得分:1)
XOR
解决方案适用于用位表示的任何事物,例如二进制计算机中的任何数据。 sub-add-sub方法遇到问题的数据类型包括