如何解决在不知道我在找什么的情况下在字符串中查找模式的最佳方法?
我有包含不超过 16 种颜色的 500x500 位图,我需要将其转换为文本文件,其中每种颜色由一个字符表示。
然后我需要通过在每一行中查找模式来减小文本文件的大小。
我现在有二维数组中的字符。
例如:
AHAHAH = 3(AH)
HAHAHA = 3(HA)
AAAHHH = 3(A)3(H)
ABYZTT = ABYZ2(T)
AHAHAB = 2(AH)AB
我不认为我可以使用正则表达式,因为可能的组合太多了。
我什至不知道从哪里开始。
解决方法
这是我为解决问题所做的工作。 我还没有彻底检查边缘情况,但它正在处理我的测试输入。 也许它会在未来对某人有所帮助。 它是运行长度编码,但适用于字符组,而不是单个字符。从我读到的内容来看,正常的 RLE 会将 AAAAHAHA 编码为 A4H1A1H1A1,而我需要将其编码为 4A2HA。
string='AHYAHYAHAHAHAHAHAHAHBBBBBBBTATAZAB*+I'
length=len(string)
half=round(length/2)
new_string=""
i=1
while i<=half and string:
if i>length-i:
pass
sub_string1=string[:i]
sub_string2=string[i:i+i]
if sub_string1==sub_string2:
match=True
count=1
while match is True:
sub_string1=string[count*i:(count+1)*i]
sub_string2=string[(count+1)*i:(count+2)*i]
if sub_string1 == sub_string2:
count+=1
else:
match=False
new_string+="("+str(count+1)+")"+sub_string1
string=string[count*i+i:]
i=1
else:
if i==len(string):
new_string+=string[0]
string=string[1:]
i=1
else:
i+=1
print(new_string)
(2)AHY(7)AH(7)B(2)TAZAB*+I
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。