1. 程式人生 > >招銀科技2017年筆試題,使用python進行簡單的字串壓縮

招銀科技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))