LeetCode 2023. Number of Pairs of Strings With Concatenation Equal to Target Solution in Java, C++, Python & Go | Explanation + Code

CoderIndeed
0
2023. Number of Pairs of Strings With Concatenation Equal to Target

Description

Given an array of digit strings nums and a digit string target, return the number of pairs of indices (i, j) (where i != j) such that the concatenation of nums[i] + nums[j] equals target.

 

Example 1:

Input: nums = ["777","7","77","77"], target = "7777"
Output: 4
Explanation: Valid pairs are:
- (0, 1): "777" + "7"
- (1, 0): "7" + "777"
- (2, 3): "77" + "77"
- (3, 2): "77" + "77"

Example 2:

Input: nums = ["123","4","12","34"], target = "1234"
Output: 2
Explanation: Valid pairs are:
- (0, 1): "123" + "4"
- (2, 3): "12" + "34"

Example 3:

Input: nums = ["1","1","1"], target = "11"
Output: 6
Explanation: Valid pairs are:
- (0, 1): "1" + "1"
- (1, 0): "1" + "1"
- (0, 2): "1" + "1"
- (2, 0): "1" + "1"
- (1, 2): "1" + "1"
- (2, 1): "1" + "1"

 

Constraints:

  • 2 <= nums.length <= 100
  • 1 <= nums[i].length <= 100
  • 2 <= target.length <= 100
  • nums[i] and target consist of digits.
  • nums[i] and target do not have leading zeros.

Solutions

Solution 1: Enumeration

Traverse the array nums, for each i, enumerate all j, if i ≠ j and nums[i] + nums[j] = target, then increment the answer by one.

The time complexity is O(n2 × m), where n and m are the lengths of the array nums and the string target, respectively. The space complexity is O(1).

PythonJavaC++Go
class Solution: def numOfPairs(self, nums: List[str], target: str) -> int: n = len(nums) return sum( i != j and nums[i] + nums[j] == target for i in range(n) for j in range(n) )(code-box)

Solution 2: Hash Table

We can use a hash table to count the occurrence of each string in the array nums, then traverse all prefixes and suffixes of the string target. If both the prefix and suffix are in the hash table, then increment the answer by the product of their occurrences.

The time complexity is O(n + m2), and the space complexity is O(n). Here, n and m are the lengths of the array nums and the string target, respectively.

PythonJavaC++Go
class Solution: def numOfPairs(self, nums: List[str], target: str) -> int: cnt = Counter(nums) ans = 0 for i in range(1, len(target)): a, b = target[:i], target[i:] if a != b: ans += cnt[a] * cnt[b] else: ans += cnt[a] * (cnt[a] - 1) return ans(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 !