假設我們給出了兩個字符串s1和s2(均爲小寫字母)。我們有兩個找到可以通過合併兩個字符串形成的最小詞彙字符串。查找合併兩個字符串形成的最小詞彙字符串
在開始時,它看起來很簡單,因爲合併了mergesort算法。但讓我們看看會出現什麼問題。
S1:ZYY
S2:ZY
現在,如果我們執行這兩個合併,我們必須決定選擇其中Z,因爲他們是平等的,很明顯,如果我們選擇,然後串形成的S2第一Z-將是:
zyzyy
如果我們選擇的z s1第一個,形成將是字符串:
zyyzy這是正確的。
正如我們可以看到mergesort的合併可能導致錯誤的答案。
再舉一例:
S1:ZYY
S2:ZYB
現在正確答案將是zybzyy這將得到只有S2首先挑ž。
還有很多其他情況下簡單的合併將失敗。我的問題是有沒有用於執行此類輸出合併的任何標準算法。
你究竟如何合併這兩個字符串?每一步你從其中一個人開始彈出一個角色? – svs
@svs從兩個字符串的左邊開始,選擇較小的字符。 –
問題在於它只是合併排序的合併操作。合併排序的前提是您的子列表已經排序。你的字符串沒有排序,因此問題。 – dhke