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

问题:

删除字符串中的 '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能力,需要实战,加油!!!
 

猜你喜欢

转载自blog.csdn.net/weixin_42521211/article/details/87930525
今日推荐