[討論] 用python找出一串數字中最長的"二數數串"

看板Python作者 (mystea)時間12年前 (2013/09/26 06:49), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
這是一個軟體公司過往的面試題目. 給定一個任意的數串, 比方說: numstring = '889988899278392520771323543282829292222943485709' 請用python找出最長的, 只有兩種數字的子數列. 在前述的例子裡, 答案是889988899 和 292922229. 我個人的解答如下: numstring = '889988899278392520771323543282829292222943485709' slen = len(numstring) candidate={} length_of_string=[] next_i = 0 start_index=[] ii=0 while (next_i + ii != slen-1): record = True candidate = {} start_index.append(next_i) for ii, j in enumerate(s[next_i:]): if j in candidate: candidate[j] += 1 else: candidate[j] = 1 if (len(candidate) == 2 and record): next_i += ii record = False if len(candidate) > 2: break length_of_string.append(ii+1) smax = max(length_of_string) sstarts = [start_index[i] for i in range(len(length_of_string)) if length_of_string[i]==smax] finalresult = [s[a:a+smax-1] for a in sstarts] print(finalresult) 想請教版友們有沒有其他的方法? 另外, 由於我台接觸python不久, 想請問我的 方法是否有多餘的地方? 謝謝. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 70.166.92.146
文章代碼(AID): #1IGsXW8G (Python)
討論串 (同標題文章)
文章代碼(AID): #1IGsXW8G (Python)