LeetCode 0389. Find the Difference Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
0389. Find the Difference

Description

You are given two strings s and t.

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(|Σ|), where n is the length of the string, and Σ represents the character set. Here the character set is all lowercase letters, so |Σ|=26.

PythonJavaC++GoTypeScriptRustC
class Solution: def findTheDifference(self, s: str, t: str) -> str: cnt = Counter(s) for c in t: cnt[c] -= 1 if cnt[c] < 0: return c(code-box)

Solution 2: Summation

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).

PythonJavaC++GoTypeScriptRustC
class Solution: def findTheDifference(self, s: str, t: str) -> str: a = sum(ord(c) for c in s) b = sum(ord(c) for c in t) return chr(b - a)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !