python基础之实现replace函数

#实现replace   这个写法有点问题  只能替换一次  在my_replace中进行简单修改即可

#第一步实现find字符串
def my_find(source,target,start=0):
    if not source or not target:
        return -1
    if len(target) > len(source):
        return -1
    
    for index in range(start,len(source)-len(target)+1):
        t_index = 0
        while t_index < len(target):
            if target[t_index] == source[t_index+index]:
                t_index += 1
                
            else:
                break
        if t_index == len(target):
            return index
    
    return -1

#第二步实现replace字符串
def my_replace(source,oldsub,newsub):
    index = my_find(source,oldsub)
    front_source = source[:index]
    back_source = source[index+len(oldsub):]
    return front_source + newsub + back_source

if __name__ == "__main__":
    print(my_replace("this is a book","this","it"))
    print(my_replace("this is a this book","this","it"))
上面的写法只能替换一次,下面这个实现完整功能
### 参考了python训练130道题
#答案
def my_replace(source,oldsub,newsub):
    if not source or not oldsub:  
        return source
    new_string = ""
    start_index = 0
    index = my_find(source,oldsub,start = start_index)
    while index != -1:#my_find返回的-1 以-1为标识循环去找
        new_string += source[start_index:index] + newsub #前办部分加上newsub
        start_index = index+len(oldsub)
        index = my_find(source,oldsub,start = start_index)
        
    new_string += source[start_index:]#形成完成的替换的字符串
    return new_string


def my_find(source,target,start=0):
    if not source or not target:
        return -1
    
    if start < 0 or start >= len(source):
        return -1
    
    if len(target) > len(source):
        return -1
    
    for index in range(start,len(source)-len(target)+1):
        t_index = 0
        while t_index < len(target):
            if target[t_index] == source[t_index+index]:
                t_index += 1
            else:
                break
        if t_index == len(target):
            return index
    return -1


if __name__ == "__main__":
    print(my_replace("this is a book","this","it"))
    print(my_replace("this is a this book","this","it"))
    print(my_replace("this is a this bookthis","t2his","it"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值