首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >查找在python中维护顺序的两个字符串之间的所有最大公共字符

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

Stack Overflow用户
提问于 2018-09-19 01:24:46
回答 1查看 0关注 0票数 0

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

Sample Input: String1 = "rammahesharaja" , String2 = "arhesahrja"

由于可以有几个最大尺寸的常见字符串,如:

代码语言:javascript
复制
aheshrja
ahesarja
rheshrja
rhesarja
........
........

我必须打印所有最大尺寸的常用字符串维护顺序。

我能找到所有常见字符,但无法维持顺序。请帮帮我。到目前为止我已经尝试过但没有得到正确的输出。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2018-09-19 10:38:50

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

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

代码语言:javascript
复制
match = SequenceMatcher(None, string1, string2).find_longest_match(0, len(string1), 0, len(string2))

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档