首页 > 解决方案 > 如果字符串恰好包含子字符串的两个实例,则返回 `True` 的函数,如果不包含则返回 `False`

问题描述

我正在尝试编写一个函数,True如果字符串恰好包含子字符串的两个实例,则返回,如果不包含False

我收到一个错误:

return' outside function

我觉得我非常接近,但不能完全理解,我很感激被指出正确的方向。应该使用递归吗?

s =  ("xeroxes")
exes = str(x)
count = 0
def has_two_X(s):
    count = s.count(exes)
    for exes in s:
        count = +1
       if count ==2:
        return True
       else:
        return False
if __name__ == "__main__":
    print("string has :",count.s(exes))

标签: python-3.xstringfunctioncount

解决方案


如果如果有两个或多个子字符串实例,代码必须返回 True,您可以创建一个字典并在字典中是否存在值时返回 True。

mydict = {}
for letter in s:
    if letter in mydict:
         return True
    else:
         mydict[letter] = 0
return False #Since there is no substring (two substring can be formed only if it has two same letters in the string)

要准确查找它是否有两个子字符串,我建议您使用相同的方法来维护字典和存在的子字符串计数。将所有子字符串/计数添加到字典中,这将需要 O(n^2) 来生成所有子字符串和大约 O(n^2) 哈希图内存。

构建 hashmap 后,如果它恰好出现两次子字符串,则可以遍历 hashmap 以返回 True。


推荐阅读