繁体   English   中英

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

[英]How to find the shortest consecutive substring which contains certain characters in a string in python?

明天我有一场高中编程比赛,在练习时我发现了很多问题,这是我问的问题。

具体而言,在这个特定的任务,你有一个包含范围可以从1到K的数字的字符串。 假设K是 4,字符串可以是123412222311241231431311233114或类似的东西。

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

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

找出这一点的最佳(或最简单)方法是什么?

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

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

见演示。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM