从字符串中的每个单词中删除重复的字母

时间:2018-11-12 16:23:14

标签: python string python-3.x for-loop linguistics

我正在准备工作面试。因此,假设我要从字符串中删除重复的字母,我想出了两个函数来实现此目的:

# option 1:
def checkDuplicates(string):
    postCheck = ""
    previousChar = None
    for currentChar in string:
        if currentChar != previousChar:
            postCheck += currentChar
            previousChar = currentChar
    return postCheck.title()

# option 2:
def checkDuplicates2(string):
    scanned = set()
    postCheck = ""
    for currentChar in string:
        if currentChar not in scanned:
            scanned.add(currentChar)
            postCheck += currentChar
    return postCheck.title()

测试:

>>> print(checkDuplicates("llaatteerr")
Later
>>> print(checkDuplicates2("llaatteerr")
Later

现在让我们说我想做同样的事情,但是要在一个字符串上做一个循环,我必须遍历字符串中的每个单词。如果单词中有重复项,请删除重复字符。如果第二个单词包含在第一个单词中看到的字符,则没关系-每个单词都有自己的大小写。例如:

>>> checkDup("llaatteerr tthhoouugghhtt")
Later Thought

因此,为了做到这一点,我创建了第二个函数:

def checkDupInWords(words):
    postCheck = ""
    for word in words.split():
        postCheck += f"{checkDuplicates(word)} "
    return postCheck

测试:

>>>print(checkDupInWords("llaatteerr llaatteerr llaatteerr"))
Later Later Later

现在我的问题是,如果一个单词包含重复的字母,并且它们是有意义的重复(即“莱昂纳多”),那该任务是否可以完成并且短期内值得追求?还是需要了解语言学和使用外部库的东西?

奖金问题:有人会说有可能在面试中或在正常的软件开发人员工作中遇到这样的任务吗(我认为如果您正在使用的是语言项目或类似项目,这是可能的。)洞察力受到赞赏!

1 个答案:

答案 0 :(得分:0)

  

现在我的问题是,如果一个单词包含重复的字母怎么办?   它们是有意义的重复项(即“莱昂纳多”)

我对重复字母的解释是,一个单词中出现两次或两次以上且不一定相邻的字母。

  

这是一项可以完成并在短期内值得追求的任务吗?

任务本身绝对是可行的,值得追求。

如果您遇到这样的问题,在建立解决方案之前,您也应该尝试澄清一下,以防您如何解释任务与面试官的意图不一致。 ps。我也不知道这个问题是否真的属于这里,这是一个奇怪的问题。