String t is generated by random shuffling string s and then add one more letter at a random position.
Return the letter that was added to t.
Example 1:
Input: s = "abcd", t = "abcde"
Output: "e"
Explanation: 'e' is the letter that was added.
Example 2:
Input: s = "", t = "y"
Output: "y"
Constraints:
0 <= s.length <= 1000
t.length == s.length + 1
s and t consist of lowercase English letters.
Solutions
Solution 1: Counting
We can use a hash table or array \(cnt\) to count the occurrence of each character in string \(s\), then traverse string \(t\). For each character, we subtract its occurrence in \(cnt\). If the corresponding count is negative, it means that the occurrence of this character in \(t\) is greater than in \(s\), so this character is the added character.
The time complexity is \(O(n)\), and the space complexity is \(O(|\Sigma|)\), where \(n\) is the length of the string, and \(\Sigma\) represents the character set. Here the character set is all lowercase letters, so \(|\Sigma|=26\).
We can sum the ASCII values of each character in string \(t\), then subtract the sum of the ASCII values of each character in string \(s\). The final result is the ASCII value of the added character.
The time complexity is \(O(n)\), where \(n\) is the length of the string. The space complexity is \(O(1)\).