#look_and_say 外觀數列python
#模擬棧彈出的操做,以彈出的第一個值做爲其餘彈出的值比較,若是相等i++,不等,開始下一次記錄。 def LookSay(look_s): li = list(look_s) #一樣數值的計數器 i i= 1 #依次彈出列表的數值 a = li.pop(0) #處理look_s = '1'的狀況 if len(li) == 0: return str(i) + a #結果集 st = '' while len(li) > 0: s = li.pop(0) if a == s: i += 1 else: st = st + str(i) + a a = s i = 1 #處理最後彈出的狀況 if len(li) == 0: st = st + str(i) + s return st te = '1' while True: te = LookSay(te) print(te)
正則表達式處理:正則表達式
def LookSay(look_s): #正則表達式中的小括號"()"。是表明分組的意思。 若是再其後面出現\1則是表明與第一個小括號中要匹配的內容相同。 #注意:\1必須與小括號配合使用 st = '' for s in re.finditer(r"(\d)\1*",look_s): st = st + str(len(s.group(0)))+s.group(1) return st