【发布时间】:2021-06-11 17:44:31
【问题描述】:
我正在尝试从字符串中找到最小的子字符串(包含集合的所有值)
例如:
Input = 'xTxxOxxVxxOxVxxTxxxOxVxTxxxOxxTxVx'
Set = 'OTV'
Output = OxVxT
Input = 'UresqTcdvavUssTss'
Set = 'UT'
Output = UssT
因为OxVxT 是 example-1 中最小的子字符串(包含 Set 的所有元素),我已经为它编写了代码,但它不是最好的方法并且不适用于所有示例,我没有找到最小的通过我的代码子串,我的代码如下:
def Fun(S, T):
lst=[]
lst1=[]
lst2=[]
for t in T:
if t not in S: return False
T = list(T)
Z= list(T)
C = list(T)
for i in range(len(S)):
if S[i] in T:
lst.append(i)
T.remove(S[i])
if len(T)==0:break
print (lst)
U=(max(lst))
for u in range(U+1,len(S)):
if S[u] in Z:
lst1.append(u)
Z.remove(S[u])
if len(Z)==0:break
print (lst1)
Q = (max(lst1))
for u in range(Q+1,len(S)):
if S[u] in C:
lst2.append(u)
C.remove(S[u])
if len(C)==0:break
print (lst2)
Str = 'xTxxOxxVxxOxVxxTxxxOxVxTxxxOxxTxVx'
Set = 'OTV'
Fun(Str,Set)
我正在查找所有可能的 SubStrings 索引,然后找到它们之间的距离,距离最短的索引是字符串中最小的子字符串。我的代码不适用于所有测试用例,也没有给出正确的结果。
【问题讨论】:
-
请再举几个例子,比如输入和预期输出。
-
@Eddie 我更新了示例,输入:xHxxRxxxxxHxRx ,设置:'HR' 输出:HxR
-
尝试在Code Review 提出这个问题。您将在那里获得对代码的详细审查..
标签: python python-3.x string algorithm substring