LeetCode 389. Find the Difference(异或)

来源:互联网 发布:淘宝直通车定向推广 编辑:程序博客网 时间:2024/05/21 10:13

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:eExplanation:'e' is the letter that was added.

思路一:

为两个字符串分别建立map,存储字符串和个数的关系。则只需找出字符个数不一样的字符,即为增加的字符。

Code1:

class Solution {public:    char findTheDifference(string s, string t) {        map<char,int> sm;        map<char,int> tm;        for(int i=0;i<s.size();i++) sm[s[i]]++;        for(int i=0;i<t.size();i++) tm[t[i]]++;        for(auto & n:tm){            if(n.second!=sm[n.first]) return n.first;        }    }};

思路二:

使用异或操作,因为除了增加的字符为奇数个,其他字符的个数均为偶数个。原理同136. Single Number。

code2:

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