作者mystea (mystea)
看板Python
标题[讨论] 用python找出一串数字中最长的"二数数串"
时间Thu Sep 26 06:49:01 2013
这是一个软体公司过往的面试题目.
给定一个任意的数串, 比方说:
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