|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是我解题中的其中一个功能需求,以下是我写的代码,目标应该输出记录了3次ab位置的list但最后只输出 [2, 8]
- a,b= 'aaabbbbbabcab','ab'
- j = 0
- total = []
- k = 0
- for j in range(len(a)):
- if a.find(b,k,14) != -1:
- total.append(a.find(b,k,14))
- k = k + a.find(b,k,14) +1
- j += 1
- print(total)
复制代码
代码中13是a的长度,为了易读所以直接写了13,
- k = k + a.find(b,k,13) +1
复制代码
第八行代码,虽然是我写的,但是最后的那个+1 我感觉会容易出bug?,但不写+1我不知道这个find的下标什么方法迭代上去好
本帖最后由 jackz007 于 2022-10-9 20:31 编辑
循环应该以找完所有的目标子串为原则进行驱动
- a , b= 'aaabbbbbabcab','ab'
- j = 0
- total = []
- while True:
- j = a . find(b , j)
- if j >= 0:
- total . append(j)
- j += len(b)
- else:
- break
- print(total)
复制代码
不用 find() 似乎能简单些:
- a , b , i , total = 'aaabbbbbabcab' , 'ab' , 0 , []
- while i < len(a) - len(b) + 1:
- if a[i : i + len(b)] == b :
- total . append(i)
- i += len(b) - 1
- i += 1
- print(total)
复制代码
运行实况:
- D:\[00.Exerciese.2022]\Python>python x.py
- [2, 8, 11]
- D:\[00.Exerciese.2022]\Python>
复制代码
|
|