我很难在维护顺序的两个字符串之间找到常用字符。
Sample Input: String1 = "rammahesharaja" , String2 = "arhesahrja"
由于可以有几个最大尺寸的常见字符串,如:
aheshrja
ahesarja
rheshrja
rhesarja
........
........
我必须打印所有最大尺寸的常用字符串维护顺序。
我能找到所有常见字符,但无法维持顺序。请帮帮我。到目前为止我已经尝试过但没有得到正确的输出。
def commonChild(s1,s2):
s1=s1.lower()
s2=s2.lower()
arr=[]
for i in range(len(s2)):
arr.append(s2[i])
print(arr)
maxString=''
for i in range(len(s1)):
index=-1
currString=''
for j in range(i,len(s1)):
char=s1[j]
if char in arr:
pointer=arr.index(char)
else:
pointer=-1
if index < pointer:
index=pointer
currString+=char
if len(currString) > len(maxString):
maxString = currString
print("maxString= "+maxString)
return maxString
print(commonChild("rammahesharaja","arhesahrja"))
输出: rhesj
发布于 2018-09-19 10:38:50
我相信@RickardSjogren在另一个使用difflib的SequenceMatcher的线程中回答了这个问题。
他的解决方案遵循以下方针:
match = SequenceMatcher(None, string1, string2).find_longest_match(0, len(string1), 0, len(string2))
并在https://stackoverflow.com/a/39404777/10129915
由于您希望获得每个可能最长的公共子字符串,因此您可能无法直接使用此代码,但类似的东西应该可以使用。
或者,您可以尝试使用动态编程来创建自己的函数。
https://stackoverflow.com/questions/-100002685
复制相似问题