招銀科技2017年筆試題,使用python進行簡單的字串壓縮
今天心血來潮,想起一道招銀筆試題。題目是這樣的,利用python,或shell語言進行字串壓縮。
整理一下思路 ,類似於c語言用指標運算元組,這裡面有個陷阱,x在list中遍歷時 ,
不要輕易去改list的值,否則會發生很神奇的錯誤,這裡就備份了一個list做修改。
我選擇python,例如“aaaassd”壓縮後變成“a4s2d1”,ok,擼起袖子開幹吧。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#定義函式
def chfunc(c):
list_d=list(c) #製造列表
list_c = list_d[:] #複製列表
i=0 #記錄列表操作索引
j=2 #記錄字元重複次數
a=0 #記錄迴圈次數
temp="" #臨時變數用於儲存重複字元
for x in list_d:
i+=1
a+=1
print(i)
if a < len(list_d):
if list_c[i] == temp and j>2:
j+=1
list_c.pop(i)
list_c[i-1]=str(j-1) #跳出這個elif j多加了1 這裡進行補償
i-=1
elif list_c[i]==list_c[i-1] and j==2:
list_c[i]=str(j)
temp=list_c[i-1]
j+=1 #僅僅用於跳出這個elif
elif list_c[i]!=temp and j>2 :
temp=""
j=2
return("".join(list_c)) #重組字串
c=input()
print(chfunc(c))