今天心血来潮,想起一道招银笔试题。题目是这样的,利用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