前往
大廳
主題

LeetCode - 2053. Kth Distinct String in an Array 解題心得

Not In My Back Yard | 2022-04-16 00:00:15 | 巴幣 0 | 人氣 202

題目連結:


題目意譯:
一個獨特字串為於一個陣列中只出現一次的一個字串。

給定一字串陣列 arr 以及一整數 k,回傳 arr 中的第 k 個獨特字串。如果少於 k 個獨特字串,則回傳空字串 ""。

注意,字串們是按其出現在陣列中的順序來考慮的。

限制:
1 ≦ k ≦ arr.length ≦ 1000
1 ≦ arr[i].length ≦ 5
arr[i] 由小寫英文字母組成。



範例測資:
範例 1:
輸入: arr = ["d","b","c","b","c","a"], k = 2
輸出: "a"
解釋:
arr 中的獨特字串為 "d" 和 "a"。
"d" 是第 1 個出現的,所以其為第 1 個獨特字串。
"a" 是第 2 個出現的,所以其為第 2 個獨特字串。
因為 k == 2,所以 "a" 被回傳了。

範例 2:
輸入: arr = ["aaa","aa","a"], k = 1
輸出: "aaa"
解釋:
arr 中所有字串皆是獨特的,所以第 1 個字串 "aaa" 被回傳了。

範例 3:
輸入: arr = ["a","b","a"], k = 3
輸出: ""
解釋:
唯一一個獨特字串為 "b"。由於少於 3 個獨特字串,所以我們回傳空字串 ""。


解題思維:
直接兩兩互相比對或是利用雜湊表(Hash Table)來檢查一字串是不是獨特的都是可以接受的。

過程中利用一變數來統計目前遇到的獨特字串之個數(包含目前的字串),當該變數值變為 k 那時,則目前的字串即為所求;如果所有字串掃完,該變數之值依舊小於 k,則代表 arr 中的獨特字串少於 k 個,所以回傳空字串 ""。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作