两组字符串中的最长公共子串(可包含多个长度相同的最长公共子串)

#include <stdio.h>
#include <string.h>
main()
{
int i,j,k,n,h,m=0,count=0,count1=0,count2=0,count3=0;
char str1[100], str2[100];
int str3[100];

printf("str1:");
gets(str1);
printf("str2:");
gets(str2);

for(h=0;str1[h]!=‘\0‘;h++){
    for(i=0;str2[i]!=‘\0‘;i++){
        count=0;
        for(j=h,k=i;str1[j]==str2[k] && str1[j]!=‘\0‘ && str2[k]!=‘\0‘;j++,k++){
            count++;
            if(count1<=count){
                count1=count;
                n=j;
            }
        }
    }
}
printf("count1=%d\n",count1);
for(j=n-count1+1;j<=n;j++){
    printf("%c ",str1[j]);
}
printf("\n");

for(h=0;str1[h]!=‘\0‘;h++){
    for(i=0;str2[i]!=‘\0‘;i++){
        count=0;
        for(j=h,k=i;str1[j]==str2[k] && str1[j]!=‘\0‘ && str2[k]!=‘\0‘;j++,k++){
            count++;
            if(count1==count){
                str3[m]=j;
                m++;
                count3++;
                count=0;
            }
        }
    }
}
printf("count3=%d\n",count3);
for(m=0;m<count3;m++){
    for(i=str3[m]-count1+1;i<=str3[m];i++){
        printf("%c ",str1[i]);
    }
    printf("\n");
}
printf("\n");

}

原文地址:http://blog.51cto.com/12596356/2085096

时间: 2024-10-10 05:26:35

两组字符串中的最长公共子串(可包含多个长度相同的最长公共子串)的相关文章

找出两个字符串中最长的相同子字符串

//找出两个字符串中最长的相同子字符串 public class Stringdemo { public static void main(String[] args) { String str1 = new String("eeabcde"); String str2 = new String("bcdefabcabcdedegg"); byte[] char1 = str1.getBytes(); byte[] char2 = str2.getBytes();

获取两个字符串中最大相同子串

2.获取两个字符串中最大相同子串.第一个动作:将短的那个串进行长度一次递减的子串打印. "cvhellobnmtanop" "andefc" 思路: 1,将短的那个子串按照长度递减的方式获取到. 2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到! package tan; class Test { public static String getMaxSubString(String s1,String s2) { String max = "

两个字符串中最大相同的子串

/* * 两个字符串中最大相同的子串. *  *  * * 思路: * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中. * 如果存在,短的那个字符串就是最大子串. * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在. * 如果存在就已找到,就不用在找了. */ public class Test2 { public static void main(String[] args) { // TODO 自动生成的方法存根 String s1="

给定两个字符串,获取两个字符串中最大相同的子串

1 package weekpratisce; 2 3 ///给定两个字符串,获取两个字符串中最大相同的子串 4 public class Demo9 { 5 public static void main(String[] args) { 6 String xx = "aaaaaaaaaaddddddd", yy = "45ddddda"; 7 String str = getMaxsubstring(xx, yy); 8 System.out.println(s

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

/* * 3,两个字符串中最大相同的子串. * "qwerabcdtyuiop" * "xcabcdvbn" *  * 思路: * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中. *   如果存在,短的那个字符串就是最大子串. * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式取子串,去长串中判断是否存在. *   如果存在就已找到,就不用在找了. * 3.先找最大的子串,再递减子串找,找到,就停止 */ 原理图如图: 代码: publi

取出两个字符串中最大相同的子串

//************************************************************************* //题目要求:4.取出两个字符串中最大相同的子串. //************************************************************************* public class SearchMaxSameString { public static void main(String[] args

获取两个字符串中最大的相同子串

public class 获取两个字符串中最大的相同子串 { public static void main(String[] args) { String a="abcwerthelloadcedf"; String b="cdhelloesadcedf"; String c=getSonString(a,b); System.out.println(c); } private static String getSonString(String a, String

黑马程序员——找出两个字符串中最大的子串

找出两个字符串中最大的子串 </pre><pre name="code" class="java">public class StringMaxString { //找一个字符串的最大子串 public static void main(String[] args) { // TODO Auto-generated method stub String s1="qwerabcdtyuiop"; String s2=&quo

获取两个字符串中最长相等的字符串

获取两个字符串中最长相等的字符串 例:"likeyou"和"loveyou" 输出"eyou" 前段时间面试遇到的面试题,当时的想法是首先将字符串拆分成字符数组,然后拿两个数组去做比较,可惜由于基础不是很扎实,当时的for循环比较写成了这个样子 for (int i = 0; i < arrStr1.length; i++) { for (int j = 0; j < arrStr2.length; j++) { if (arrStr