如何在python中找到包含字符串中某些字符的最短连续子字符串?

时间:2016-02-11 16:07:52

标签: python regex string substring

我明天有一个高中的编码竞赛,在练习的过程中,我发现了很多问题。

具体来说,在这个特定的任务中,你有一个字符串,其中包含可以的数字,范围从1到K.假设K是4,字符串可以是1234,1222231,124123143,1311233114,或类似的东西。

我被要求找到包含从1到K的所有值的最短连续子串的长度。如果这样的子串不存在,我应该返回-1。

如果我没有解释清楚,如果字符串是1234,最短的子字符串将是1234并且其长度是4.如果它是1222231,那里没有数字4,所以它应该返回-1。在124123143中,最短长度也是4(4123,2314),如果是1311233114,则最短长度为6 - 233114。

找到这个的最佳(或最简单)方法是什么?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

对于k = 4,你可以做这样的事情

(?=([1234])(?!\1)([1234])(?!\1|\2)([1234])(?!\1|\2|\3)([1234]))

参见演示。

https://regex101.com/r/uN5aG9/1