有一种压缩算法,基本原理是:特殊字符+重复次数+字符。
比如有文本字符串:A A A A A B C C C C B C C C,编码后得到:B B 5 A B B 4 C B B 3 C。编码串的最开始说明特殊字符B,以后B后面跟着的数字就表示出重复的次数。编程实现将从Text1输入的一个字符串,点压缩按钮后用上述方法压缩,压缩后的编码在Text2中输出,text3中输入特殊字符。压缩算法:
a) 给压缩串添加开关的特殊字符
b) 逐个判断输入字符串的字符(当前的字符与后一个比较),如果两个字符不同,则连到了压缩串中,如果有连续的重复字符则计数n+1
c) 最后一组重复字符或单个字符再连到压缩串中。
u 连入压缩串方法:单个的直接连入,有重复的连入特殊字符开头+数字+重复的字符
图1
程序如下:
Private Sub Command1_Click()
Dim src As String, t As String ‘src保存输入的字符串
Dim desc As String ‘desc保存压缩后的字符串
Dim c As String ‘c保存特殊字符
Dim n As Integer ‘n用来记连续重复字符个数
src = Text1.Text
c = Text3.Text
n = 0
desc =
① For i = 1 To
② n = n + 1
t = Mid(src, i, 1)
If t <>
③ Then
desc = desc & zipstring(n, c, t)
n = 0
End If
Next i
Text2.Text = desc & zipstring(n, c,
④ )
End Sub
Private Function zipstring(n As Integer, c As String, sr As String) As String
If n <= 1 Then
zipstring = sr
Else
zipstring = c & Trim(Str(n)) & sr
End If
End Function
①
②
③
④