【发布时间】:2023-04-05 20:56:01
【问题描述】:
给定一个字符串,找到最长的子字符串,其字符是连续的(即它们是连续的字母)但可能是混乱的(即乱序)。例如:
输入:"owadcbjkl"
输出:"adcb"
我们认为adcb 与它形成abcd 一样连续。
(这是一道面试题。)
我有一个想法,使用 2 个条件运行一个 while 循环,一个使用 Python 的 ord 检查连续字符,另一个条件是找到最小值和最大值,并检查以下所有字符是否都在此范围内。
有没有什么方法可以在运行时间复杂度低的情况下解决这个问题?我能做到的最好是 O(N^2) 其中 N 是输入字符串的长度,ord() 似乎是一个缓慢的操作。
【问题讨论】:
-
这个问题太冗长了:试着把你的算法写成类似 Python 的格式(伪代码),这样我们就能更好地理解它。
-
这种问题在这里是题外话。您应该通过codereview.stackexchange.com 询问这个问题
-
请详细解释您的问题中定义有效子字符串的内容。你说
adcb是有效的,adc也是有效的吗? -
简单的
O(n*m*m)解决方案可以基于最长子字符串不超过m的事实,其中m是字母大小。如果m是固定的,例如m == 26,那么它是一个线性时间(虽然无效)的解决方案。如果m不固定,则this question might be related。 -
@OcasoProtal 这个问题完全是关于Stack Overflow 的主题,因为它是关于实现a software algorithm。在Code Review 上将是题外话,这只是关于审查工作代码;我很困惑为什么你会建议它。关于算法本身的问题将在 Computer Science 上讨论,但不会在 Python 中实现:这绝对属于 Stack Overflow。