LeetCode Entry
2053. Kth Distinct String in an Array
kth unique
2053. Kth Distinct String in an Array easy
blog post
substack
youtube

Join me on Telegram
https://t.me/leetcode_daily_unstoppable/693
Problem TLDR
kth unique #easy
Intuition
Filter out all the duplicates first.
Approach
We can use a HashMap for counter or just two HashSets. Let’s use some API:
- Kotlin: groupingBy.eachCount, filter
- Rust: filter, skip, next
Complexity
-
Time complexity: \(O(n)\)
-
Space complexity: \(O(1)\)
Code
fun kthDistinct(arr: Array<String>, k: Int) = arr
.groupingBy { it }.eachCount().filter { it.value == 1 }
.keys.elementAtOrNull(k - 1) ?: ""
pub fn kth_distinct(arr: Vec<String>, k: i32) -> String {
let (mut uniq, mut dup) = (HashSet::new(), HashSet::new());
for s in &arr { if !uniq.insert(s) { dup.insert(s); }}
arr.iter().filter(|&s| !dup.contains(s)).skip(k as usize - 1)
.next().unwrap_or(&"".to_string()).to_string()
}