Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2053.html
2053. Kth Distinct String in an Array (Easy)
A distinct string is a string that is present only once in an array.
Given an array of strings arr
, and an integer k
, return the k^{th}
distinct string present in arr
. If there are fewer than k
distinct strings, return an empty string ""
.
Note that the strings are considered in the order in which they appear in the array.
Example 1:
Input: arr = ["d","b","c","b","c","a"], k = 2 Output: "a" Explanation: The only distinct strings in arr are "d" and "a". "d" appears 1^{st}, so it is the 1^{st} distinct string. "a" appears 2^{nd}, so it is the 2^{nd} distinct string. Since k == 2, "a" is returned.
Example 2:
Input: arr = ["aaa","aa","a"], k = 1 Output: "aaa" Explanation: All strings in arr are distinct, so the 1^{st} string "aaa" is returned.
Example 3:
Input: arr = ["a","b","a"], k = 3 Output: "" Explanation: The only distinct string is "b". Since there are fewer than 3 distinct strings, we return an empty string "".
Constraints:
1 <= k <= arr.length <= 1000
1 <= arr[i].length <= 5
arr[i]
consists of lowercase English letters.
Companies:
Amazon
Related Topics:
Array, Hash Table, String, Counting
Solution 1.

class Solution { public String kthDistinct(String[] arr, int k) { Map<String, Integer> counter = new HashMap<>(); for (String v : arr) { counter.put(v, counter.getOrDefault(v, 0) + 1); } for (String v : arr) { if (counter.get(v) == 1) { k; if (k == 0) { return v; } } } return ""; } }

class Solution { public: string kthDistinct(vector<string>& arr, int k) { unordered_map<string, int> counter; for (auto& v : arr) ++counter[v]; for (auto& v : arr) { if (counter[v] == 1) { k; if (k == 0) return v; } } return ""; } };

class Solution: def kthDistinct(self, arr: List[str], k: int) > str: counter = Counter(arr) for v in arr: if counter[v] == 1: k = 1 if k == 0: return v return ''

func kthDistinct(arr []string, k int) string { counter := make(map[string]int) for _, v := range arr { counter[v]++ } for _, v := range arr { if counter[v] == 1 { k if k == 0 { return v } } } return "" }