python-顺序串基本操作的实现

 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
大于


posted @ 2020-11-03 21:04  zou-ting-rong  阅读(631)  评论(0编辑  收藏  举报