Java 异或

Java异或是Java二进制的一种运算规则。两个相同的操作位相同则为0,不同则为1。

特性:

1、任意两个相同的数异或的值为0,任何数与0的异或至为原值。x ^ x = 0,0 ^ x = x

2、多个数异或运算时,最终都将所有值的操作位做一遍是否相同的比较,所以可以得到:x^(y^z) = (x^y)^z

示例:

1、给定两个字符串 s 和 t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。(来自LeetCode

 public char xor(String s, String t){

       char a =0;

        for(int i = 0 ; i < s.length() ; i++){ 

           a^=s.charAt(i); 

          } 

       for(int i = 0 ; i < t.length() ; i++){

            a^=t.charAt(i);

           }

        return a;    

}

2、给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。(来自LeetCode

/**

所有出现两次元素在异或后结果为0,0与出现一次的数据异或后,值不变

*/

public int singleNumber(int[] nums) {

        int result = nums[0];

        for(int i = 1; i<nums.length; i++ ){

            result ^= nums[i];

        }

        return result;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容