如何删除Python中的三重字母

2024-10-01 15:34:00 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有点困惑,因为我把这些小代码放在一起。我的老师给了我这个信息:

Iterate over the string and remove any triplicated letters (e.g. "byeee mmmy friiiennd" becomes "bye my friennd"). You may assume any immediate following same letters are a triplicate.

我基本上只看到了重复的例子,那么如何删除三重的呢?我的代码在运行时不会返回任何信息。你知道吗

def removeTriplicateLetters(i):
    result = ''
    for i in result:
        if i not in result:
            result.append(i)
    return result

def main():
    print(removeTriplicateLetters('byeee mmmy friiiennd'))


main()

Tags: 代码in信息maindefany老师result
3条回答

而不需要编写代码来解决问题。你知道吗

迭代字符串时,将该迭代添加到新字符串中。 如果下一次迭代与上一次迭代相同,则不要将其添加到新字符串中。你知道吗

这将捕获问题中的三个和两个字符。 调整了以前的答案,删除了一些不需要的行。你知道吗

def remove_n_plicates(input_string, n):
    i=0
    result = ''
    while(True):
        result += input_string[i]
        if input_string[i:i+n] == input_string[i]*n:
            i += n
        else:
            i += 1

        if i >= len(input_string):
            break
    return result


input_string = "byeee mmmy friiiennd"
output_string = remove_n_plicates(input_string, 3)
print(output_string)
# bye my friennd

您的代码返回一个空字符串,因为这正是您编码的内容:

result = ''
for i in result:
    ...
return result

因为result是一个空字符串,所以根本不进入循环。 如果进入循环,则无法返回任何内容:

for i in result:
    if i not in result:

if没有意义:要得到那个语句,i必须result

相反,按照@newbie所示去做。遍历字符串,查看3个字符的片段。如果切片等于第一个字符的3个副本,那么您已经识别出一个三元组。你知道吗

    if input_string[i:i+n] == input_string[i]*n:

我用“n”来概括这个场景。在您的情况下,您可以通过n=3,如下所示

def remove_n_plicates(input_string, n):
    i=0
    final_string = ''
    if not input_string:
        return final_string
    while(True):
        final_string += input_string[i]
        if input_string[i:i+n] == input_string[i]*n:
            i += n
        else:
            i += 1

        if i >= len(input_string):
            break

    return final_string


input_string = "byeee mmmy friiiennd"
output_string = remove_n_plicates(input_string, 3)
print(output_string)
# bye my friennd

现在可以将其用于任何“n”值(其中n>;0和n<;输入字符串的长度)

相关问题 更多 >

    热门问题