1 #*********************************************************************** ** 2 #> File Name: seqstring.py 3 #> Author: 邹庭荣 4 #> Mail: 1198875194@qq.com 5 #> Created Time: 2020年11月03日 星期二 18时29分10秒 6 #********************************************************************** ***/ 7 """ 8 串的基本概念 9 字符串也叫串,室友字符组成的有限序列,是一种常用的废树脂数据。串的逻辑结 构是线性表,其每个数据元素都是一个字符。串的操作特点与线性表,主要是对子 串进行操作,通常采用顺序结构存储。 10 串的比较规则和字符串的比较规则相似 11 从第一个字符开始比较,ASCII码越大字符串则越大,第一个相同则比较第二个,> 以此后推 12 当两个字符串的长度不等时,各位都相等,则长度较长的更大 13 """ 14 class seqstring(object): 15 def __init__(self,obj): 16 if obj is None: 17 self.strvalue = [] 18 self.curlen = 0 19 else: 20 self.curlen = len(obj) 21 self.strvalue = [None] * self.curlen 22 for i in range(self.curlen): 23 self.strvalue[i] = obj[i] 24 def clear(self): 25 self.curlen = 0 26 def isEmptr(self): 27 return self.curlen == 0 28 def length(self): 29 return self.curlen 30 def getitem(self,i): 31 if i < 0 or i > self.curlen: 32 raise Exception("列表越界") 33 else: 34 return self.strvalue[i] 35 def addlength(self,lengthnumber): 36 """将串的长度扩充为lengthnumber""" 37 temp = self.strvalue 38 self.strvalue = [None] * lengthnumber 39 for i in range(self.curlen): 40 self.strvalue[i] = temp[i] 41 self.curlen = lengthnumber 42 def sunstr(self,begin,end): 43 """返回从begin开始到end - 1的子串""" 44 return self.strvalue[begin:end] 45 def insert(self,i ,strinsert): 46 """在i位置之后添加str""" 47 if i < 0 or i > self.curlen: 48 raise Exception("插入位置非法") 49 templist1 = self.strvalue[:i] 50 templist2 = self.strvalue[i:] 51 strvalue1 = [None] * len(strinsert) 52 length = self.curlen + len(strinsert) 53 54 temp = self.strvalue 55 56 self.strvalue = self.addlength(length) 57 for x in range(len(strinsert)): 58 strvalue1[x] = strinsert[x] 59 self.strvalue = templist1 + strvalue1 + templist2 60 self.curlen = length 61 def delete(self,begin,end): 62 if begin < 0 or begin > self.curlen or end > self.curlen or end < 0: 63 raise Exception("删除位置非法") 64 else: 65 templist1 = self.strvalue[:begin] 66 templist2 = self.strvalue[end:] 67 self.curlen = self.curlen - end + begin 68 self.strvalue = templist1 + templist2 69 def comprare(self,strcomprare): 70 n = self.curlen if self.curlen > len(strcomprare) else len(strco mprare) 71 for i in range(n): 72 if self.strvalue[i] > strcomprare[i]: 73 return ("大于") 74 elif self.strvalue[i] < strcomprare[i]: 75 return ("小于") 76 if self.curlen < len(strcomprare): 77 return ("小于") 78 elif self.curlen > len(strcomprare): 79 return ("大于") 80 def display(self): 81 for i in self.strvalue: 82 print(i,end = " ") 83 print() 84 if __name__ == "__main__": 85 seqstring1 = seqstring("123456") 86 seqstring1.display() 87 print(seqstring1.length()) 88 print(seqstring1.getitem(1)) 89 print(seqstring1.sunstr(1,3)) 90 seqstring1.insert(3,"000") 91 print(seqstring1.length()) 92 seqstring1.display() 93 seqstring1.delete(2,6) 94 seqstring1.display() 95 print(seqstring1.length()) 96 print(seqstring1.comprare('12345'))
运行结果
1 2 3 4 5 6
6
2
['2', '3']
9
1 2 3 0 0 0 4 5 6
1 2 4 5 6
5
大于