找不同
題目描述:給定兩個字串 s 和 t,它們只包含小寫字母。
字串 t 由字串 s 隨機重排,然後在隨機位置新增一個字母。
請找出在 t 中被新增的字母。
示例說明請見LeetCode官網。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/probl...
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解法一:二進位制運算
異或運算:如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。 所以如果a、b是2個相同的數,則異或的結果肯定是0。
具體處理過程如下:
- 如果s為null或者空字串,則直接返回t的首個字元。
- 否則,初始化一個x為0,遍歷s和t的每一個字元,依次和x進行異或運算,由於a和b只有一個字元不相同,所以最終異或的結果即是新增的那個字母。
public class LeetCode_380 {
public static char findTheDifference(String s, String t) {
if (s == null || s.length() == 0) {
return t.charAt(0);
}
int x = 0;
for (int i = 0; i < s.length(); i++) {
x ^= s.charAt(i);
x ^= t.charAt(i);
}
x ^= t.charAt(t.length() - 1);
return (char) x;
}
public static void main(String[] args) {
System.out.println(findTheDifference("abcd", "abcde"));
}
}
【每日寄語】 今天的成績是昨天的汗水,明天的成功還須今天的努力。