【问题标题】:Remove duplicate letters from each word in string从字符串中的每个单词中删除重复的字母
【发布时间】:2018-11-12 16:23:13
【问题描述】:

我正在准备面试。所以假设我想从一个字符串中删除重复的字母,我想出了两个函数来完成这个:

# 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

现在我的问题是,如果一个单词包含重复的字母,并且它们是有意义的重复(即“Leonardo”),这是否是一项可以完成并值得在短期内完成的任务?还是需要语言学知识和使用外部库的知识?

额外问题:有没有人说有可能在面试中或在正常的软件开发人员工作中遇到这样的任务(我认为如果你正在处理的项目是语言项目或类似的东西,这是可能的。)任何感谢您的洞察力!

【问题讨论】:

  • 这绝对是你在面试时会遇到的。大多数时候,这些编程测试通常不是因为它们本身具有实际用途而给出的,而是因为它们抽象了计算机科学中的一个问题,该问题在理论或实践中确实具有很大的价值。因此,通常不会向您提供包含重复项有意义的“单词”,但澄清问题的意图和参数是面试官可能希望看到的有用技能。
  • @Stephen 这正是我的想法。从一个单词中删除重复的问题是一个常见的问题,所以我尝试将其扩展到从多个单词中删除重复。更进一步,我想如果两个字母出现在一个单词中,但不是重复的,就像提供的示例一样。
  • 但是在您的示例中,这封信仍然是重复的。删除它肯定会删除单词的含义,但是为了算法的正确性,它应该删除那些重复的字母,即使这意味着破坏实际单词的预期含义。这就是你的职能的实际要求发挥作用的地方,因为你需要与面试官澄清这些要求,以弄清楚你应该如何处理这种情况。
  • @Stephen 这是有道理的。我必须养成向面试官提问以澄清问题的习惯。

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


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 如果不在这里,问题会属于哪里?我对从普通 Python 用户那里获得洞察力非常感兴趣。我知道在其他语言以及 Python 中,有一些库可用于完成语法检查和拼写检查(即语法检查和语言检查。
猜你喜欢
  • 1970-01-01
  • 2012-03-14
  • 2019-07-03
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
相关资源
最近更新 更多