我明天有一个高中的编码竞赛,在练习的过程中,我发现了很多问题。
具体来说,在这个特定的任务中,你有一个字符串,其中包含可以的数字,范围从1到K.假设K是4,字符串可以是1234,1222231,124123143,1311233114,或类似的东西。
我被要求找到包含从1到K的所有值的最短连续子串的长度。如果这样的子串不存在,我应该返回-1。
如果我没有解释清楚,如果字符串是1234,最短的子字符串将是1234并且其长度是4.如果它是1222231,那里没有数字4,所以它应该返回-1。在124123143中,最短长度也是4(4123,2314),如果是1311233114,则最短长度为6 - 233114。
找到这个的最佳(或最简单)方法是什么?
提前谢谢!
答案 0 :(得分:0)
对于k = 4,你可以做这样的事情
(?=([1234])(?!\1)([1234])(?!\1|\2)([1234])(?!\1|\2|\3)([1234]))
参见演示。