美团点评2020校招测试方向笔试题

删除字符

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

将给定的字符串,按照规则删除字符,输出删除后的字符串。删除规则为:相同字符连续,则删除,如”aaaab”删除后的字符串为”b” 。注:仅是单个字符连续才删除,如babababa则不能删除;

输入描述:
输入数据有多组,每组一行,仅包含数字和英文字母,不包含转义等其他特殊字符,输入数据最大长度为10;

输出描述:
对于每个测试实例,要求输出按规则删除后的数据,每个测试实例的输出占一行。如果删除后有字符,直接输出删除后的字符;如果删除后为空,则输出”no”

输入例子1:
a
aaaaabbbb

输出例子1:
a
no

思路:
第一个,最后一个字符与中间字符分开讨论

if input_str[i - 1] != input_str[i] and input_str[i + 1] != input_str[i]:
                result = result + input_str[i]

即便 i 从1到 len()-1,也只是判断了第二个字符 到 倒数第二个,第一个和最后一个没有判断;

while True:
    try:
        input_str = input()
        result = ""
        for i in range(len(input_str)):
            if len(input_str) == 1:
                result = input_str
                break
            if i == 0:
                if input_str[i + 1] != input_str[i]:
                    result = result + input_str[i]
            elif i == len(input_str) - 1:
                if input_str[i - 1] != input_str[i]:
                    result = result + input_str[i]
            else:
                if input_str[i - 1] != input_str[i] and input_str[i + 1] != input_str[i]:
                    result = result + input_str[i]
        if len(result) == 0:
            print("no")
        else:
            print(result)
    except:
        break

注意输入问题
去除 try … except 报错?

你可能感兴趣的:(2020公司笔试,python)