arrays - 在遍历数组时检查某些 "divider elements"是否有规律地间隔?

标签 arrays algorithm language-agnostic iteration

我无法想出解决此问题必须存在的高效算法:

遍历一个数组,检查作为“标记”的元素。如果我注意到任何标记没有将其余元素划分为相同长度的运行,请设置一个标志。除了最后一次运行,这是剩余部分。

不应设置标志的示例:

*....*....*..*

应该设置标志的例子:

*....*...*...*
*....*....**

直觉告诉我们应该可以很简单地在线完成,并且它可能等同于一些我不知道其通常名称的众所周知的问题。

最佳答案

解决方案:

计算标记之间元素的数量并形成一个列表。比检查这个列表元素是否除了最后一个元素之外都是相同的,并且列表的最后一个元素不为 0。边缘情况:只有一个元素,它可以是 0。

Python代码:

def is_correct(string):
    splitted_list = string.split("*")[1:-1]  # Split and strip edge elements.
    if len(splitted_list) == 1:
        return True
    if len(splitted_list[-1]) == 0:   # Check that last element is 0.
        return False
    for i in range(1, len(splitted_list)-1):   # Check that others are the same.
        if len(splitted_list[0]) != len(splitted_list[i]):
            return False
    return True  

# Test    
print is_correct("*....*....*..*")
print is_correct("*....*...*...*")
print is_correct("*....*....**")

关于arrays - 在遍历数组时检查某些 "divider elements"是否有规律地间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29732927/

相关文章:

c - 如何替换 2 个数组之间的值 (C)

java - java中的数组处理字符串和整数组合的句子

python - mlpy - 动态时间扭曲取决于 x?

algorithm - 贪婪的方法在这里有效吗?

java - 为什么人们写--i?

arrays - 如何返回随机字典

arrays - 将 Perl 数组放入哈希中

c - 算法挑战 : Generate Continued Fractions for a float

algorithm - 高效的数据结构搜索算法

language-agnostic - 参数和参数之间的区别