在一个维度中找到最短路径

Adh*_*tta 7 algorithm

在一维数组S中,可能存在属于该组的任何数量的元素

U:{A,B,C,D,E}  
Run Code Online (Sandbox Code Playgroud)

并且允许重复.
示例:

S  = {E,B,D,C,A,D,A,E,E,D,B,B,A,C} 
Run Code Online (Sandbox Code Playgroud)

问题是:

什么是最有效的方法,我可以确定包含属于集合U的所有元素的最短范围/路径,在任何给定的数组S?请记住,数组无法排序.

在上面的例子中,最短路径是连接数组S的前5个元素.

编辑:
1)集合U的元素数不是常数.

提前致谢.

Dan*_*ode 3

有趣的作业,但你仍然需要自己编码。

好消息是您没有告诉我们您使用哪种语言,所以我将其视为您决定自己编写代码的标志,这很好。


到目前为止我最好的尝试:

有 2 个用于子字符串(范围)的指针,一个用于范围的开始(较小的索引),一个用于结束(较大的索引)。两者都首先指向数组的开头。

列出该范围内分别有多少个ABCDE。

从左到右迭代end 。

对于每个字符,增加列表中该字符的编号。如果结果(增加多少)> 1(,查看start是否指向同一个字符。如果是,则将start向前移动并减1,并且)当start指向相关数字> 1的字符时,将start向前移动和负 1。

如果列表中的 ABCDE 全部 >= 1,那么我们就找到了一个候选范围。将其与最短长度(如果有)进行比较,如果更小,则更新最短长度并记录新的最短范围开始的索引。