zoukankan      html  css  js  c++  java
  • 封装系统字符串内置函数,实现类似功能

    1、封装类似lower()的函数

    def myLower(src):
        src1 = ''
        for i in src:
            if 'A' <= i <= 'Z':
                src1 += chr(ord(i) + 32)
            else:
                src1 += i
        return src1
    #print(myLower('AcdEjlG'))
    

    2、封装类似upper()的函数

    def myUpper(src):
        src1 = ''
        for i in src:
            if 'a' <= i <= 'z':
                src1 += chr(ord(i) - 32)
            else:
                src1 += i
        return src1
    #print(myUpper('aCdEf'))
    

    3、封装类似find()的函数

     第一种思路:
    def myFind1(src,sub):
        for i in range(len(src)-len(sub)+1):
            new_src = src[i:i+len(sub)]
            #print(new_src)
            if new_src == sub:
                return i
        else:
            return -1
    print(myFind1('abcde123abe','123a'))
    第二种思路:
    def myFind(src,sub):
    
        if len(sub) > len(src):
            return -1
        for i in range(len(src)):
            if src[i] == sub[0]:
                index = i
                for j in range(len(sub)):
                    if src[index] != sub[j]:
                        break
                    index += 1
                else:
                    return i
        else:
            return -1
    

    4、封装类似rfind()的函数

    第一种思路:
    def myRfind(src,sub):
        #从右往左进行遍历
        for i in range(len(src)-1,-1,-1):
            #先找第一个字符,如果一致,在进行对应切片比较
            if sub[0] == src[i]:
                #如果切片出来的结果与子串一致,返回所在的索引值
                if sub == src[i:i+len(sub)]:
                    return i
        #如果没找到,返回-1
        else:
            return -1
    # index = myRfind('abc123','c1')
    # print(index)
    
    第二种思路:
    def myRfind(src,sub):
        if len(sub) > len(src):
            return -1
        for i in range(-1,-len(src)-1,-1):
            if src[i] == sub[0]:
                index = i
                for j in range(len(sub)):
                    if src[index] != sub[j]:
                        break
                    index += 1
                else:
                    return len(src) + i
        else:
            return -1
    #print(myRfind('abcdegabeda','ab'))
    

    5、封装功能类似isdigit()的函数

     def myIsdigit(src):
        for ch in src:
            if not '0' <= ch <= '9':
                return False
        else:
            return True
    print(myIsdigit('123'))
    print(myIsdigit('123a'))
    

    6、封装功能类似partition()的函数

     def myPartition(src,sub):
        if sub in src:
            #获取子串在目标字符串的索引值
            index = myRfind(src,sub)
            #切片操作划分三个元素:  1.str[0:index]  2.sub 3.[index+len(sub):]
            return (src[0:index],sub,src[index+len(sub):])
        else:
            return (src,'','')
    # print(myPartition('abcdef','g'))
    print(myPartition('abcdef','cd'))
    
  • 相关阅读:
    django 设置局域网内访问项目
    104. Maximum Depth of Binary Tree
    multi dimension array
    Longest Plindrome Subarray
    BlockQueue
    H2O
    HoppingIterator
    midStack
    Reverse Words in a String II
    public boolean canPlaceFlowers(List<Boolean> flowerbed, int numberToPlace)
  • 原文地址:https://www.cnblogs.com/ilovepython/p/11068888.html
Copyright © 2011-2022 走看看