1
hjq98765 2019-07-25 16:51:27 +08:00
抛砖:
''.join(map(str,your_list)).split('3102') |
2
xpresslink 2019-07-25 16:52:52 +08:00
楼主描述问题不是太清楚,让人听了云里雾里的。
思路很简单,把 list 按 4 个元素分割 然后 用每个子 list 做 set 和 set((3,1,0,2))比较 if (set((3,1,0,2)) - set([2,0,1,3])) 或者 if len(set((3,1,0,2)) & set([2,0,1,3]))==4 就可以判断出来了。 |
4
momocraft 2019-07-25 17:03:20 +08:00
“不完整” 可以任意长吗?如果长度不定,还存在确定的步数吗?
|
5
xpresslink 2019-07-25 17:04:52 +08:00
@hjq98765 这么做有 bug
|
6
Raymon111111 2019-07-25 17:06:44 +08:00
感觉问题没有良好定义
不过要分析直接遍历就行了吧? 用 cur 标记当前应该是什么值 用 startIndex 标记计算起始 index 用 curIndex 标记当前计算的 index 然后开始遍历, 直到结束 cur = 3, startIndex=0, curIndex=0 如果当前值和 cur 不等, 那么就是不符合的值, 记录 startIndex 和 curIndex, 标记这一段都是不符合的, cur 重置回 3 如果值相等并且不是 2, 那么 curIndex++, 同时 cur 往后走一位 如果值相等是 2, 那么 startIndex 和 curIndex 是满足条件的序列, 同时 ++ 开始新的判定, 并且 cur 重置回 3 |
7
hjq98765 2019-07-25 17:07:02 +08:00
|
8
Raymon111111 2019-07-25 17:08:31 +08:00
有个小毛病, 如果相等而且是 2 应该是 curIndex++ 并且 startIndex = curIndex
|
9
necomancer 2019-07-26 03:04:28 +08:00
1 楼++
import re re.split('3102', ''.join(map(str,your_list))) 然后去数连续非 '' 元素的个数。方法很多~ |