【发布时间】:2015-10-09 07:32:40
【问题描述】:
假设我有这个由独立整数元素组成的整数数组:
111100010011010
我想知道这个数组中是否存在0000,显然不存在,但是000 存在。其他长度的连续运行也是如此。
我知道这很容易用字符串完成,有内置的函数,但是有没有内置的东西可以完成我想做的事情?
或者我忽略了另一种简单的方法?我能想到的只是复杂的非高效算法,遍历数组并将值保存在一个临时的其他数组中。
【问题讨论】:
-
你想解决什么问题,比如在更高的层次上? “元素”是什么意思?这些只是位,还是它们是单独的整数?您的查询
0000总是 是否是一系列相同的数字(例如可以描述为{ digit_value, count })?您的搜索查询可以是010111吗?你知道移位和&、|等按位运算吗? -
int array = {1, 1, 0, 0, ...}这些是数组中单独的整数元素,全部为 1 或 0。在更高级别上,我想检查给定序列是否为最大长度序列。我只是想开始检查0000是否存在于 4 长度的 MLS 中,而 MLS 一定不存在。我确实知道按位运算。 -
目前还不清楚您要达到的目标。您是否要查找最长的运行或检查给定运行的存在或找出给定的运行是否是最长的运行或其他?将您的非高效算法呈现为代码可能会更好。
-
现在我只想检查这个序列中是否存在“0000”。我还没有把我的算法写成代码,但如果它有帮助,这就是我最终想要实现的目标:en.wikipedia.org/wiki/Maximum_length_sequence#Run_property