大佬们,求解,改如何编写出来呢!

假如要实现一种字符串查找的方法findAll(source_str,dest_str):

从源字符串source_str中查找所有目标字符串dest_str出现的位置,并返回由这些位置(下标)构成的列表

例如:从字符串’abcXXabcXXabc’中查找所有的’abc’出现的位置,结果是[0,5,10]

要求:使用两种方法实现findAll方法

# 法一
str1 = "abcXXabcXXabc"
result = []

for i,v in enumerate(str1):
    if str1[i:i+3] == 'abc':
        result.append(i)


# 法二
[i for i,v in enumerate(str1) if str1[i:i+3] == 'abc']
>>> def findAll_1(source_str, dest_str):
	i, result = 0, list()
	while True:
		k = source_str[i:].find(dest_str)
		if k < 0:
			break
		result.append(i+k)
		i += k+len(dest_str)
	return result

>>> def findAll_2(source_str, dest_str):
	s, d = len(source_str), len(dest_str)
	return [i for i in range(s-d+1) if source_str[i:i+d]==dest_str]

>>> findAll_1('abcXXabcXXabc', 'abc')
[0, 5, 10]
>>> findAll_2('abcXXabcXXabc', 'abc')
[0, 5, 10]