看板 Python 關於我們 聯絡資訊
def KDistinctCharacter(s,k): ans = [] word = dict() len = 0 i = 0 for ch in list(s): if( ch in word and i - word[ch] < k ): len = i - word[ch] else: len += 1 word[ch] = i if( len >= k ): sub = s[i - k + 1:i + 1] if sub not in ans: ans.append(sub) i += 1 return ans ###### # 測資 s = 'awaglknagawunagwkwagl' k = 4 a = KDistinctCharacter(s,k) print("ans:", a) ※ 引述《suhang (suhang)》之銘言: : https://imgur.com/a/2GAU3 : my solution : https://repl.it/@shih_hsuanhsu/KDistinctCharacter : def KDistinctCharacter3 : def KDistinctCharacter2 : 兩個方法應該都正確,但是複雜度為O(nk) : 網路上高手說可以做到O(n) : 我試著又寫了 KDistinctCharacter : 但是我想不透該怎麼做 : 求助! : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.131.210 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1520934332.A.CD8.html ※ 編輯: cutekid (36.233.35.113), 03/14/2018 10:15:44