[英]Find first distinct string
我正在接受實習面試。 面試官問了以下問題。
給定字符串流,找到第一個不同的字符串(在流中不重復)。
例如:“ abc”,“ xyz”,“ abcd”,“ abc”
ans是“ abc”,“ abc”,“ abc”,“ xyz”
我告訴了使用map和set的方法,但是假設String的哈希值是在O(1)中計算的,則時間復雜度為O(nlogn)。 他不斷強調做得更好,並告訴我們預期的復雜度為O(n)。 我無法提出解決方案,但被拒絕了。 請幫我一個忙。
可以使用trie和queue解決。
for string in text:
if string not in trie:
insert_in_trie(string)
insert_in_queue(string)
else:
if not queue.empty():
queue.pop()
if queue.empty():
print("No distinct character")
else:
print(queue.front())
總體復雜度將為O(字符串的總長度),因為插入,刪除和在隊列中的偷看和trie將為O(字符串的長度)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.