这个题目如果想不到用异或运算的话,写起来可能真的会有点麻烦。我们想到异或运算的特点,a ^ a = 0,如果插入了一个字母的话,那么这个两个字符串中,出现的次数肯定是奇数次,而其他的都是偶数次,所以直接把所有的字符都异或一遍,答案自然就出来了!
之前还有一个面试题目,就是有 N 1 块相同容量的硬盘,其中 N 块用来存储数据,如果利用多余的 1 块硬盘来存储 N 块硬盘的数据备份,假设硬盘最多同时只会损坏 1 块。我想通过上面几个题,大家应该很快想到存储办法了吧,答案就是多余的 1 块硬盘存储 N 块硬盘异或的结果,那么当其中 1 块硬盘损坏的时候,只需要把其他好的硬盘数据再异或一遍,即可得到损坏的硬盘的数据了。
通过上面的例子,我们发现在查找“奇数个”的数据的时候,异或运算用起来还是非常方便的。异或运算还有很多其他的应用,比如简单的加密数据,加密:result = a ^ password,解密:a = result ^ password。
异或运算很简单,难点在于遇到问题能不能想到利用异或运算来解决问题,这就需要我们在编程过程中一点点积累经验,祝大家学习顺利!