题目描述

Given two strings s and t which consist of only lowercase letters.

String t is generated by random shuffling string s and then add one more letter at a random position.

Find the letter that was added in t.

Example:

Input:
s = "abcd"
t = "abcde"

Output:
e

Explanation:
'e' is the letter that was added.

解法一

思路

这题换一个说法就似曾相识了:一个数组中,除一个数仅出现一次外,其他数都出现两次,找出这个数。没错,就是LeetCode 136. Single Number(只出现一次的数),这里把每个字母当成一个数组元素就好了(实际上char就可以等价地看作int)。

Python

class Solution(object):
    def findTheDifference(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: str
        """
        result_ord = 0
        for item in s:
            result_ord ^= ord(item)
        for item in t:
            result_ord ^= ord(item)
        return chr(result_ord)

Java

public class Solution {
    public char findTheDifference(String s, String t) {
        char result = 0;
        for (char item : s.toCharArray()) {
            result ^= item;
        }
        for (char item : t.toCharArray()) {
            result ^= item;
        }
        return result;
    }
}

C++

class Solution {
public:
    char findTheDifference(string s, string t) {
        char result = 0;
        for (char item : s) {
            result ^= item;
        }
        for (char item : t) {
            result ^= item;
        }
        return result;
    }
};