zoukankan      html  css  js  c++  java
  • 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
    大于


    笨鸟先飞
  • 相关阅读:
    一张900w的数据表,16s执行的SQL优化到300ms?
    webpack学习收集
    集合对象的string类型字段进行排序
    react 项目中使用antd的select组件placeholder不生效的解决方法
    React Hook做页面跳转以及携带参数,并且获取携带的值
    eclipse jar包 Source not found
    细说Redis分布式锁🔒
    Spring Boot中有多个@Async异步任务时,记得做好线程池的隔离!
    HDFS基本命令
    斐波那契数(Java)
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/13922552.html
Copyright © 2011-2022 走看看