[討論] 用python找出一串數字中最長的"二數數串"
這是一個軟體公司過往的面試題目.
給定一個任意的數串, 比方說:
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
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 5 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章