Java 異或

Java異或是Java二進(jìn)制的一種運(yùn)算規(guī)則。兩個(gè)相同的操作位相同則為0,不同則為1。

特性:

1、任意兩個(gè)相同的數(shù)異或的值為0,任何數(shù)與0的異或至為原值。x ^ x = 0,0 ^ x = x。

2、多個(gè)數(shù)異或運(yùn)算時(shí),最終都將所有值的操作位做一遍是否相同的比較,所以可以得到:x^(y^z) = (x^y)^z

示例:

1、給定兩個(gè)字符串?s?和?t,它們只包含小寫字母。字符串t由字符串s隨機(jī)重排,然后在隨機(jī)位置添加一個(gè)字母。請(qǐng)找出在?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、給定一個(gè)非空整數(shù)數(shù)組,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。(來自LeetCode

/**

所有出現(xiàn)兩次元素在異或后結(jié)果為0,0與出現(xiàn)一次的數(shù)據(jù)異或后,值不變

*/

public?int?singleNumber(int[]?nums)?{

????????int?result?=?nums[0];

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

????????????result?^=?nums[i];

????????}

????????return?result;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容