簡體   English   中英

查找第一個不同的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM