• 【python】实例-python实现两个字符串中最大的公共子串


    由于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]!=''){
                    //10.通过同步进行比较公共字符串
                    for(int k=0;str[k+i]!=''&&str1[k+j]!=''&&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("没有公共子字符串");
        }
    }
    

      

  • 相关阅读:
    使用element-ui组件el-table时需要修改某一行样式(包含解决样式无效的问题)或某一列的样式
    面试题:线程A打印1-10数字,打印到第5个数字时,通知线程B
    面试题:不使用数学库求平方根
    Springboot2.x集成Redis集群模式
    Springboot2.x集成Redis哨兵模式
    Springboot2.x集成单节点Redis
    基本算法:冒泡排序算法
    Redis进阶:Redis的哨兵模式搭建
    Redis进阶:Redis的主从复制机制
    Redis的消息订阅及发布及事务机制
  • 原文地址:https://www.cnblogs.com/paulwinflo/p/4428661.html
Copyright © 2020-2023  润新知