由于python中的for循环不像C++这么灵活,因此该用枚举法实现该算法:

C="abcdefhe"
D="cdefghe" m=0
n=len(C)
E=[]
b=0
while(m<n):
i=n-m
while(i>=0):
E.append(C[m:m+i])
i-=1
m+=1 for x in E:
a=0
if x in D:
a=len(x)
c=E.index(x)
if a > b:#保存符合要求的最长字符串长度和地址
b=a
d=c if b>0:
print E[d]

  

参照C语言实现方法:

//3.定义一个求最大公共子字符串的函数
void maxChild(char str[],char str1[])
{
    //4.定义两个指针变量,用于记录相同的起始地址
    char *p,*q;
   
    //5.定义两个整型变量,用于保存最大公共长度
    int n=0,m=0;
   
    //6.通过for循环来遍历第一个字符串
    for(int i=0;i<strlen(str);i++)
    {
        //7.通过for循环遍历第二个字符串
        for(int j=0;j<strlen(str1);j++)
        {
            //8.每次比较完两个字符串的公共部分后,都设置m=0
            m = 0;
            //9.判断两个字符串起始相同,只要一有相同的,就同步进行判断
            if(str[i]==str1[j]&&str1[j]!='\0'){
                //10.通过同步进行比较公共字符串
                for(int k=0;str[k+i]!='\0'&&str1[k+j]!='\0'&&str[k+i]==str1[k+j];k++)
                {
                    //11.记录公共字符个数和第一个匹配的地址
                    m++;
                    p = &str[i];
                }
                if(m>n)
                {
                    //12.保存大地址,和最大个数
                    q = p;
                    n = m;
                }
            }
        }
    }
   
    //13.判断是否有公共子字符串
    if(n>0){
        //14.进行输出最大公共子字符串
        for(int i=0;i<n;i++){
            printf("%c",*(q+i));
        }
    }else{
        printf("没有公共子字符串");
    }
}

  

【python】实例-python实现两个字符串中最大的公共子串的更多相关文章

  1. 【Java例题】5.5 两个字符串中最长公共子串

    5. 查找两个字符串中含有的最长字符数的公共子串. package chapter5; import java.util.Scanner; public class demo5 { public st ...

  2. java基础知识回顾之---java String final类普通方法的应用之“两个字符串中最大相同的子串”

    /* * 3,两个字符串中最大相同的子串. * "qwerabcdtyuiop" * "xcabcdvbn" *  * 思路: * 1,既然取得是最大子串,先看 ...

  3. java 算法之 两个字符串中最大相同的子串

    public class String_intern { public static void main(String[] args) { String old="aaaaabc1" ...

  4. 求两个字符串的最长公共子串——Java实现

    要求:求两个字符串的最长公共子串,如“abcdefg”和“adefgwgeweg”的最长公共子串为“defg”(子串必须是连续的) public class Main03{ // 求解两个字符号的最长 ...

  5. poj 2774 后缀数组 两个字符串的最长公共子串

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 31904   Accepted: 12 ...

  6. hihocoder-1415 后缀数组三·重复旋律3 两个字符串的最长公共子串

    把s1,s2拼接,求Height.相邻的Height判断左右串起点是否在两个串中,另外对Height和s1.length()-SA[i-1]取min. #include <iostream> ...

  7. [URAL-1517][求两个字符串的最长公共子串]

    Freedom of Choice URAL - 1517 Background Before Albanian people could bear with the freedom of speec ...

  8. 【poj3294-不小于k个字符串中最长公共子串】后缀数组

    1.注意每两个串之间的连接符要不一样. 2.分组的时候要注意最后一组啊!又漏了! 3.开数组要考虑连接符的数量.100010是不够的至少要101000. #include<cstdio> ...

  9. 求两个字符串的最长公共子串(LCS)

    http://tianyunpu2008.blog.163.com/blog/static/6559379920089162236915/

随机推荐

  1. JavaScript运算符:递增递减运算符前置和后置的区别

    从两段代码说起 var num1 = 2; var num2 = 20; var num3 = --num1 + num2; var num4 = num1 + num2; console.log(n ...

  2. Cxfreeze使用存在问题

    Cxfreeze使用 cx_Freeze-5.1.1-cp36-cp36m-win_amd64.wh 1● 打包多个文件 Cxfreeze D:/test.py –target-dir D:/   c ...

  3. learning shell get script absolute path (3)

    Shell get script absolute path [Purpose]        Get shell script absolute path   [Eevironment]       ...

  4. 51nod1513

    题解: 更据题意,在树上深度为没一个数的都放在一起,要用的时候二分出来,看结果 用c++的数据结构 代码: #include<bits/stdc++.h> using namespace ...

  5. ehlib ado 删除选中记录 的方法

    procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin do begin DBGridEh1.DataSource. ...

  6. 使用shake.js让你博客支持摇一摇

    大家好,又到了随机文章的时间,请使用手机打开演示站点,然后像摇妹子一样摇晃手机,你会发现非常牛逼的事情,炫酷吧.该功能已经集成在Oconnor1.8中.本文主要讲解这货的原理. 首先需要下载shake ...

  7. L229 词汇题

    The incidence of lung cancer is particularly high among long-term heavy smokers,especially chain smo ...

  8. java算法大全

    题一: /** * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,  * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对? * 分析:  * 第 ...

  9. 在linux中使用终端浏览器w3m

    w3m是一个基于文本的网页浏览器,支持多种操作系统,在命令行终端可以很好的支持中文.即使在没有鼠标支持的情况下也可以检查网页的输出. 1. 安装w3m $ sudo apt install w3m 2 ...

  10. Python入门——第一个Python程序

    1.1 Hello Python书写步骤 步骤一:新建文本文档文件,修改名称为hello.py 步骤二:使用记事本打开文件,书写程序内容如下: print("hello python&quo ...