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

获取两个字符串中最大相同子串
例如找到字符串"abcwerthelloyuiodef"和"cvhellobnm"中的最大相同字串

0

2个回答

 public class LCString2 {

    public static void getLCString(char[] str1, char[] str2) {
        int i, j;
        int len1, len2;
        len1 = str1.length;
        len2 = str2.length;
        int maxLen = len1 > len2 ? len1 : len2;
        int[] max = new int[maxLen];
        int[] maxIndex = new int[maxLen];
        int[] c = new int[maxLen]; // 记录对角线上的相等值的个数

        for (i = 0; i < len2; i++) {
            for (j = len1 - 1; j >= 0; j--) {
                if (str2[i] == str1[j]) {
                    if ((i == 0) || (j == 0))
                        c[j] = 1;
                    else
                        c[j] = c[j - 1] + 1;
                } else {
                    c[j] = 0;
                }

                if (c[j] > max[0]) { // 如果是大于那暂时只有一个是最长的,而且要把后面的清0;
                    max[0] = c[j]; // 记录对角线元素的最大值,之后在遍历时用作提取子串的长度
                    maxIndex[0] = j; // 记录对角线元素最大值的位置

                    for (int k = 1; k < maxLen; k++) {
                        max[k] = 0;
                        maxIndex[k] = 0;
                    }
                } else if (c[j] == max[0]) { // 有多个是相同长度的子串
                    for (int k = 1; k < maxLen; k++) {
                        if (max[k] == 0) {
                            max[k] = c[j];
                            maxIndex[k] = j;
                            break; // 在后面加一个就要退出循环了
                        }

                    }
                }
            }
        }

        for (j = 0; j < maxLen; j++) {
            if (max[j] > 0) {
                System.out.println("第" + (j + 1) + "个公共子串:");
                for (i = maxIndex[j] - max[j] + 1; i <= maxIndex[j]; i++)
                    System.out.print(str1[i]);
                System.out.println(" ");
            }
        }
    }

    public static void main(String[] args) {

        String str1 = new String("abcwerthelloyuiodef");
        String str2 = new String("cvhellobnm");
        getLCString(str1.toCharArray(), str2.toCharArray());
    }
}
2
1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
获取两个字符串中最大的相同子串
//获取两个字符串中最大的相同子串,比如str1="abcwerthelloyuiodef",str2="abcwecvhellobnm"可能会有多个 public static List getMaxSubString(String str1,String str2) { String maxStr=(str1.length()>str2.length())?str1:str2; S
获取两个字符串中最大相同子串。
获取两个字符串中最大相同子串。 比如: str1 = "abcwerthelloyuiodef“;str2 = “cvhellobnm” 提示:将短的那个串进行长度依次递减的子串与较长 的串比较。 package com.zy; /*********************************************** @作者: 萌道天下第一 ...
给定两个字符串,获取两个字符串中最大相同的子串
给定两个字符串,获取两个字符串中最大相同的子串 1 package weekpratisce; 2 3 ///给定两个字符串,获取两个字符串中最大相同的子串 4 public class Demo9 { 5 public static void main(String[] args) { 6 ...
获取两个字符串的最大相同子串
/** 获取两个字符串的最大相同子串。 Strings1="也许成湖科技是今天最大的赢家"; Strings2="可能成湖科技未必成为今天最大的赢家吧"; /** 获取两个字符串的最大相同子串。 String s1 = "也许成湖科技是今天最大的赢家"; String s2 = "可能成湖科技未必成为今天最大的赢家吧"; 思路: 1,先明确两个字符...
两个字符串的最大相同子串
两个字符串的最大相同子串 1 public class TestsonString { 2 public static void main(String[] args) { 3 String s1 = &quot;asdfkljasdCCTVCCTVfioejsdfunbsdfhh&quot;; 4 String s2...
两个字符串最大相同的子串
package cn.itcast.string.test; public class StringTest3 { /* * 两个字符串最大相同的子串 * */ public static void main(String[] args) { String s1 = “sdsd”; String s2 = “sdsdfs”; String s = maxSubString(s2,s1); Syst...
两个字符串中最大相同的子串
/*  * 3,两个字符串中最大相同的子串。  * "qwerabcdtyuiop"  * "xcabcdvbn"  *   * 思路:  * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。  * 如果存在,短的那个字符串就是最大子串。  * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。  * 如果存在就已找到,就不用在
两个字符串中最大相同子串
public class StringTest3 { /** * @param args * 两个字符串中最大相同的子串 */ public static void main(String[] args) { String s1="qwertabcyuiop"; String s2="fgabchjkl"; String s=maxCommonSubstring(s1
获取最大相同子串
class StringTest3 { public static void main(String[] args) { String s1 = "Hello" ; String s2 = "ell"; System.out.println(getMaxSubString(s2,s1)); } /*获取最大相同子串*/ public static String getMa
黑马程序员_编写程序,获取两个字符串中最大相同子串
------- android培训、java培训、期待与您交流!---------        前段时间看完了毕老师关于字符串讲解的视频,最近为了加强对字符串的理解,就找到了获取两个字符串的最大子串这道题。刚看到这道题,我就想啊,我该如何下手做这道题,一时我还真想不出。没有办法,就翻看了毕老师上课时的笔记出来看看,我边看边想,思路终于出来了。思路:首先我们要判断这两个字符串谁的长度长,谁的长度
Java 获取两个字符串中最大的相同子串
获取两个字符串中最大的相同子串     String an1 = &quot;11ab22&quot;; String an2 = &quot;3ab3&quot;; String an3 = &quot;&quot;; boolean flag = false; for (int i = 0; i &amp;lt; an2.length(); i++) { for (int j = 0, k = an2.length() - i; k != a...
编程实现获取两个字符串中最大相同子串
编程实现获取两个字符串中最大相同子串
Java获取两个字符串中最大相同子串
Java获取两个字符串中最大相同子串
编写程序,获取两个字符串中最大相同子串
private void test() { String a = &quot;Valaienie&quot;; String b = &quot;Maierginle&quot;; String max = a.length() &amp;gt; b.length() ? a : b; String min = a.length() &amp;lt; b.length() ? a : b; String temp...
获取两个字符串中最大相同子串的实现
/** * 获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。 * "abcwerthelloyuiodef" * "dvhellobnm" * 思路: * 1,将短的那个子串按照长度递减的方式获取到 * 2,将没获取到的子串去长串中判断是否包含, * 如果包含,已经找到!。 */ @Test public
获取两个字符串中最大相同的子串(java)
找出两个字符串中的最大子串:例s1=&quot;asdafghjka&quot;, s2=&quot;aaasdfg&quot;    他们的最大子串为&quot;asd&quot;   这个题类似与字符串匹配的问题,首先因想到用长的字符串判断是否包含短的字符串 高效的做法是:依次把短的字符串的长度递减,找出短的字符串的子字符串,这样就大大提高了效率 减少了比较的次数。 例:1.短的长度为 0~s2.lengh() 与长的判断一次(判断是否包含);...
java获取两个字符串中最大子串
1.程序 package Demo2; public class Compare { //获得两个字符串的最大子串,首先定义方法将两个字符串传入 public static String GetMaxString(String str1, String str2) { //比较两个字符串大的为max,小的为min. String max = (str1.length() >
取得两个字符串的最大相同子串
import java.util.ArrayList; import java.util.List; public class StringCommonUtil { /** * 取得两个字符串的最大相同子串 * @param str1 * @param str2 * @return */ public static St...
求任意两个字符串的最大相同子串
c语言# include #include int main(){ char a[100],b[100]; printf("s1="); scanf("%s",a); printf("s2="); scanf("%s",b); int i,j,k,maxlen=1,m; for(i=0;i for(j=0;j if(a[i]==b[j]){ for(k=1;a[i+k]==
[Java]取得两个字符串的最大相同子串
思路:           1.取得两个字符串中相对较短的一个,记作s2,较长的字符串记作s; 2.判断s2是否为s的子串,如果是,直接输出,如果不是,执行下边的代码 3.对s2进行截取,从s2[0]截取到s2.length(),s2.length()-1,s2.length()-2直至s2[1]; 从s2[1]截取到s2.length(),s2.length()-1,s2.length
比较两个字符串,找出最大的相同子串
public class Test05 { public static void main(String[] args) { String str1="adfdfghellojavabggiijbffbfhelloworldsdrtyiooipwtfdv"; //String str1="ncvkhvkdfhfhieuwiqwewhellojavaecvbvbnbnqe"; String
求两个字符串的最大相同子串
需求:两个字符串的最大相同子串。&quot;dfdsfacctvjjdfkj&quot;&quot;dadcctvlklk&quot;思路:1.以短的字符串为主。  到长的字符串中去判断是否存在,如果存在,已找到。2.如果没有找到。将短的字符串的长度递减获取子串继续到长的串中查找。只要找到就结束。3.没有找到就返回空。------------------------------------------------------------...
查找两个字符串的最大相同子串
转自: http://hi.baidu.com/defeat2001/blog/item/29f760258294c921d507421d.html     public class BigestCommonSubString { // 查找两个字符串的最大相同子串,最大交集 public static void main(String[] args) {
两个字符串中的最大子串
* &quot;qwerabcdtyuiop&quot; * &quot;xqabcdvbn&quot;
获取字符串的最大子串
/* 需求:获取两个字符串中。一个字符串在另外一个的最大子串 思路: 首先遍历,从小到大找出小的那个字符串的子串, 每次找出就判断大的字符串是否包含它,如果包含就返回 */ package stringTest4; class StringTest4 { public static void main(String[] args) { String str="abcdefghijk"
核心API的使用(获取两个字符串的最大相同子串)
/** * 获取两个字符串的最大相同子串。 例:abegad acegab */public class TheSameString { public static void main(String[] args) { String s1 = "abegad"; String s2 = "acegab"; String maxString = maxSubString(s1, s2); S...
java练习获取两个字符串的最大相同子串
package myTest; public class FindMostLargeSubstringDemo {     public static void main(String[] args) { // TODO 自动生成的方法存根 String s1="asdqwerdfvfrgr"; String s2="wqerasdqmll"; String s=Max
Java 获取两个字符串的最大子串
public class getMaxSubstring { /** *获取两个字符串的相同的最大子串 */ public static void main(String[] args) { String s2="nbasfhdnbajdnbaaanb"; String s1="asdinbajdaab"; String s; s=getMaxSubString
【java编程】String之两个字符串获取最大子串
class MaxSubString { public static void main(String[] args) { String s1 = "aasdjkjlkjldjhellofoqieuiocnvmz"; String s2 = "aasdjkjlkjldhello"; System.out.println(getMaxSubString(s1,s2)); }
两个字符串相同子串的长度
#include &quot;stdio.h&quot; char * str1 = &quot;asdfasdsssssssAAAADDD&quot;; char * str2 = &quot;qwasdasdfasdAAAADDDD&quot;; int sameLength = 0; void getSameLength(char * str0, char * str1) {    int tmpLength = 0;    char * fir...
黑马程序员—取两个字符串中最大相同子串
------- android培训、java培训、期待与您交流! ---------- 1 /* 2 查找两个字符串中的最长相同字串 3 */ 4 5 class Compare{ 6 //查找角标靠后的最长相同子串 7 public String lastCompare(String str,String str2) throws Nu...
查找一个字符串中两个相同的最大的子串
查找一个字符串中两个相同的最大的子串题目查找一个字符串中两个相同的最大的子串思路将问题转化为查找两个字符串的最大子串问题。 参考“最长公共子串”。程序package base;/** * description: * * @author liyazhou * @since 2017-10-16 15:12 */ import org.junit.Test;import java.util
求两个字符串中的最大相同子串 SubString
package com.itcast.base;public class SubStringTest { public static void main(String[] args) {  String str1 = "ashfjeudccckfjgiccccccjgurhd";  String str2 = "dhfurjcccckgoymjdhccfi";  String max = "";  for (int i = 0; i    String temp1 = str2.substring(i);/
两个字符串中最大的相同的子串(java编写)
如何求两个字符串中最大 的相同的子串? 以下是用java编写的程序 public class StingTest4 { public static void main(String[] args) { // TODO Auto-generated method stub /* * 两个字符串中最大的相同的子串 *  * */ String str1="abcbbefijg
两个字符串中最大相同的子串。 "qwerabcdtyuiop" "xcabcdvbn"
两个字符串中最大相同的子串。 "qwerabcdtyuiop" "xcabcdvbn"
求两个字符串的最大子串
 #include #define MAXN 201 int maxsubstr(char *s1,char *s2) { int max,i,j,k,len1,len2,t,m; char *p,*q; len1=strlen(s1); len2=strlen(s2); if(len1>=len2) {   p=s1;q=s2; } else {   p=s
截取两个字符串的最大子串
找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad" 主要用的是矩阵的思想
匹配两个字符串的最大子串
#!/usr/bin/python def getLongest(str_a,str_b): longest = 0 ret = "" for i in range(0,len(str_a)): for j in range(0,len(str_b)): if(str_a[i]==str_b[j]): ast = i+1 bst = j+1 count=1
Java找出两个字符串中最大的子串
[java] view plain copy print?// 找一个字符串的最大子串      public static void main(String[] args) {            String s1 = ”qwerabcdtyuiop”;          String s2 = ”xcabcdvbn”;          String stringMax = stringMa
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合

相似问题