我尝试创建一个函数,该函数接受两个字符串,然后返回第一个字符串中每个字符在第二个字符串中找到的次数的总和,条件是第一个字符串中的重复字符被忽略
e.g。 glScalef()
表示计数为1,因为第二个字符串只有一个search_counter('aabbaa','a')
且没有a
s,我们只想搜索b
一次,尽管有四个{ {1}}秒。
这是我到目前为止的尝试:
a
我的例子的问题是没有检查忽略search_string中的重复字符。
因此,我得到a
而不是def search_counter(search_string, searchme):
count = 0
for x in search_string:
for y in searchme:
if x == y:
count = count + 1
return count
。
答案 0 :(得分:3)
for x in search_string:
通过将字符串转换为集合,您可以获得没有重复字符的字符列表。
for x in set(search_string):
答案 1 :(得分:1)
您可以通过将字符串转换为集合来消除字符串中的重复:
>>> set("asdddd")
set(['a', 's', 'd'])
以这种方式预处理字符串,算法的其余部分将保持不变(set
个对象是可迭代的,就像strings
)
答案 2 :(得分:0)
您可以使用迭代来执行此操作
def search_counter(string, search):
count = 0
for i in range(len(string)):
count += string[i:].startswith(search)
return count
或者这个单行
search_counter = lambda string, search: sum([string[i:].startswith(search) for i in range(len(string))])