python实现:删除指定的两个字符串(Cloudin云英笔试编程题)

目录

问题

解题思路

python具体实现

题外话


问题

删除字符串中的 'b' 和'ac',即保证删除后的结果中不存在'b'和'ac'。


示例:

输入:"acbac"            输出:""

输入:"aaac"             输出:"aa"

输入:"ababc"           输出:"a"


解题思路

      分析:如果有字符"b"出现,即立刻删除掉;在字符“c”出现的前面,没有字符b存在的情况下,则可以直接匹配前一个字符是否为"a"。因此,详细实现步骤如下:

    1)空字符串的处理。如果字符串为空,则程序直接返回;

    2)对字符“b”和“ac”的遍历处理。在判断“ac”之前,先判断字符“b”,如有,则将字符b从字符串中剔除,程序具体实现,则为重新拼接字符串,这里注意字符“b”在字符串的开始或者结尾的单独处理判断,以及剔除字符“b”后,迭代记数不做变动;判断为当前字符不为“b”后,再判断字符“ac”是否出现,因此需要记数i>0,同样注意zi字符“ac”在字符串开始和末尾的处理,因为对字符“ac”剔除后,字符串长度少2,因此迭代记数i=i-1;若两个字符均未进行过剔除,则i=i+1进行递增向后查找;

    补充:如2)中所说,因此可以先循环遍历剔除‘b’,确保字符串中不存在‘b’后,再循环遍历,查找剔除"ac",这种实现参考实现方式2。


python具体实现

方式一:解题思路中的详细步骤过程实现

# 删除字符串中的 'b' 和'ac',返回值不存在'b'和'ac'
def delstr2(strd,b,ac):
    if strd == '':
        return ""
    i = 0
    while i<len(strd):
        if strd[i]=='b':
            if i ==0:
                strd = strd[1:]
            elif i == len(strd)-1:
                strd = strd[:len(strd)-1]
                break
            else:
                strd = strd[:i]+strd[i+1:]
        elif strd[i]=='c' and strd[i-1]=='a' and i>0:
            if i ==1:
                strd = strd[2:]
            elif i == len(strd)-1:
                strd = strd[:i-1]
                break
            else:
                strd = strd[:i-1]+strd[i+1:]
                i = i-1
        else:
            i = i+1
    return strd


strd = 'aaaaacbbacc'

print(delstr2(strd,'b','ac'))

方式二:解题思路中的补充部分的方法实现:

# 删除字符串中的 'b' 和'ac',返回值不存在'b'和'ac'
def delstr(strd,b,ac):
    if strd == '':
        return ""
    i = 0
    while i<len(strd):
        if strd[i]=='b':
            if i ==0:
                strd = strd[1:]
            elif i == len(strd)-1:
                strd = strd[:len(strd)-1]
                break
            else:
                strd = strd[:i]+strd[i+1:]
        else:
            i = i+1
    
    i = 1
    while i<len(strd):
        if strd[i]=='c' and strd[i-1]=='a':
            if i ==1:
                strd = strd[2:]
            elif i == len(strd)-1:
                strd = strd[:i-1]
                break
            else:
                strd = strd[:i-1]+strd[i+1:]
                i = i-1
        else:
            i = i+1
    return strd
                

strd = 'aaaaacbbacc'

print(delstr(strd,'b','ac'))

题外话

     这是自己的面试程序题目,现场手写的代码一塌糊涂,即便是这样简单的代码,手写出来错误百出,该时候下功夫了,coding能力,需要实战,加油!!!
 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步,慕至千里

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值