Description
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.
Analysis
Let
hs[i]
and
ht[i]
record how many times the
ith
letters appears in string s,t, respectively. And map
hs
and
ht
to find the only different value. The
char(key+97)
is the answer.
Also, someone used XOR to find the different letter because the even-time appearance of the same part of
s
,
(A⊕B)⊕(A⊕B⊕C)=0⊕C=C
Code
class Solution {
public:
char findTheDifference(string s, string t) {
short ht[26] = { 0 }, hs[26] = { 0 };
for (char c : s) hs[c - 97]++;
for (char c : t) ht[c - 97]++;
for (int i = 0; i < 26; i++)
if (hs[i] != ht[i])
return char(i+97);
}
};
Appendix
- Link:https://leetcode.com/problems/find-the-difference/
- Run Time: 3ms