两个字符串,查询大字符串中是否出现小字符串,输出出现的次数和位置,用两个for循环遍历
时间: 2024-05-13 12:16:38 浏览: 51
这里提供一种基于两个 for 循环的简单实现,时间复杂度为 $O(nm)$,其中 $n$ 和 $m$ 分别为大字符串和小字符串的长度。代码如下:
```python
def search_string(big_str, small_str):
count = 0
positions = []
for i in range(len(big_str) - len(small_str) + 1):
match = True
for j in range(len(small_str)):
if big_str[i+j] != small_str[j]:
match = False
break
if match:
count += 1
positions.append(i)
return count, positions
```
其中,`big_str` 为大字符串,`small_str` 为小字符串,函数返回一个元组 `(count, positions)`,其中 `count` 表示小字符串在大字符串中出现的次数,`positions` 是一个列表,表示小字符串出现的位置。
需要注意的是,在第一个循环中,我们不需要遍历整个大字符串,只需要遍历到 `len(big_str) - len(small_str)` 即可。这是因为如果大字符串中剩余的字符数比小字符串还少,那么显然小字符串一定不可能出现在这里面。
阅读全文