LeetCode-389-找不同

雄獅虎豹發表於2021-10-06

找不同

題目描述:給定兩個字串 st,它們只包含小寫字母。

字串 t 由字串 s 隨機重排,然後在隨機位置新增一個字母。

請找出在 t 中被新增的字母。

示例說明請見LeetCode官網。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/probl...
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

解法一:二進位制運算

異或運算:如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。 所以如果a、b是2個相同的數,則異或的結果肯定是0。

具體處理過程如下:

  • 如果snull或者空字串,則直接返回t的首個字元。
  • 否則,初始化一個x為0,遍歷st的每一個字元,依次和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"));
    }
}
【每日寄語】 今天的成績是昨天的汗水,明天的成功還須今天的努力。

相關文章