查找在python中维护顺序的两个字符串之间的所有最大公共字符

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (192)

我很难在维护顺序的两个字符串之间找到常用字符。

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

提问于
用户回答回答于

我相信@RickardSjogren在另一个使用difflib的SequenceMatcher的线程中回答了这个问题。

他的解决方案遵循以下方针:

match = SequenceMatcher(None, string1, string2).find_longest_match(0, len(string1), 0, len(string2))

并在https://stackoverflow.com/a/39404777/10129915

由于您希望获得每个可能最长的公共子字符串,因此您可能无法直接使用此代码,但类似的东西应该可以使用。

或者,您可以尝试使用动态编程来创建自己的函数。

扫码关注云+社区

领取腾讯云代金券