python中字符串索引_字符串中子字符串的基本索引重复(python)

我正在努力教自己基础编程.

一个简单的项目是查找字符串中子字符串的重复索引.所以例如,在字符串“abcdefdef”和子串“def”中,我希望输出为3和6.我有一些代码写,但我没有得到我想要的答案.以下是我写的

注意:我知道可能有更简单的方法来生成结果,利用该语言的内置功能/包,例如正则表达式.我也知道我的方法可能不是最佳算法.从来没有,在这个时候,我只是在寻求修复以下逻辑的建议,而不是使用更多惯用的方法.

import string

def MIT(String, substring): # "String" is the main string I'm searching within

String_list = list(String)

substring_list = list(substring)

i = 0

j = 0

counter = 0

results = []

while i < (len(String)-1):

if [j] == [i]:

j = j + 1

i = i + 1

counter = counter + 1

if counter == len(substring):

results.append([i - len(substring)+1])

counter = 0

j = 0

i = i+1

else:

counter = 0

j = 0

i = i+1

print results

return

我的推理是这样的.我将String和子字符串转换为列表.这允许索引字符串中的每个字母.我设置i和j = 0 – 这些将分别是我在String和substring索引中的第一个值.我还有一个新的变量counter,我将其设置为0.基本上,我使用计数器来计算位置[i]中的字母等于位置[j]中的元素的次数.如果counter等于substring的长度,那么我知道[i-len(substring)1]是我的子串开始的位置,所以我将它添加到名为results的列表中.然后我重置计数器和j并继续搜索更多的子串.

我知道代码很尴尬,但我认为我仍然可以得到答案.相反,我得到:

>>> MIT("abcdefghi", "def")

[[3]]

>>> MIT("abcdefghi", "efg")

[[3]]

>>> MIT("abcdefghi", "b")

[[1]]

>>> MIT("abcdefghi", "k")

[[1]]

有什么想法吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值