首页 > 试题广场 >

删除字符

[编程题]删除字符
  • 热度指数:2865 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

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


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


输出描述:

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

示例1

输入

a
aaaaabbbb

输出

a
no
while 1:
    # 循环处理
    try:
        # 获取到字符串
        s1 = input()
        # 定义两个列表,初始值都是s1的遍历
        list_s1 = [i for i in s1]
        list_s2 = [i for i in s1]
        # 使用一个列表来固定最大索引数,并遍历列表
        for i in range(0, len(list_s1) - 1):
            # 如果前一位和后一位相等的话,就将另一个列表中的两个相等的元素置为空
            if list_s1[i] == list_s1[i + 1]:
                list_s2[i] = list_s2[i + 1] = ''
        # 判断如果列表不为空,则输出字符串
        if ''.join(list_s2) != '':
            print(f"{''.join(list_s2)}")
        else:
            print('no')
    except:
        break

发表于 2023-03-02 17:46:11 回复(0)
used存放重复的元素,第一个元素为空格,所以可以保存第一个,最后一个也要考虑好。
while True:
    try:
        num = input()
        s = ""
        used = " "
        for i in range(len(num)-1):
            if num[i] != num[i+1] and num[i] != used[-1]:
                s += num[i]
            else:
                used += num[i]
        if num[-1] != used[-1]:s += num[-1]
        print(s if s else 'no')
    except:
        break


编辑于 2020-08-31 23:17:52 回复(0)
while True:
    try:
        a= list(input())
        b=a.copy()
        if len(a) == 1:
            print("".join(a))
        else:
            for i in range(len(a)-1) :

                if a[i]==b[i+1]:
                    if i == (len(a)) - 2:
                        if a[i + 1] == b[i]:
                            a[i + 1] = " "
                            a[i]=" "
                        #print("yes")
                    a[i] = " "
                elif i>0:
                    if a[i]==b[i-1]:
                        a[i]=" "
        res=("".join(a)).replace(" ", "")
        if len(res)>0:
            print(res)
        else:
            print("no")
    except:
        break
暴力解法,复制一个列表然后就嗯循环,循环到最后一个若相同则最后两个同时赋值为空(格)
暴 力 美 学
编辑于 2020-03-13 14:57:43 回复(0)