Java练习之最大相同子串

 1 package string.demo;
 2 /* 需求:找到两个字符串的最长共同子串
 3  * 思路:
 4  * 1.先看短的那个字符串是否在长的那个字符串中,如果存在,短的那个字符串就是最大共同子串
 5  * 2.如果不存在,那么就将短的那个子串进行长度递减的方式取子串,去长串中判断是否存在,如果
 6  *     存在,找到!
 7  *
 8  */
 9 public class FindMostLargeSubstring
10 {
11
12     /**
13      * @param args
14      */
15     public static void main(String[] args)
16     {
17         String s1 = "qwerabcdtyuiop";
18         String s2 = "xcabcdvbn";
19         String s = getMaxSubstring(s1, s2);
20         System.out.println("s = " + s);
21     }
22
23     /**
24      * 获得最大子串
25      * @param s1
26      * @param s2
27      * @return
28      */
29     private static String getMaxSubstring(String s1, String s2)
30     {
31         String max = null;
32         String min = null;
33         max = (s1.length() > s2.length()) ? s1 : s2;
34         min = max.equals(s1) ? s2 : s1;
35         for (int i = 0; i < min.length(); i++)
36         {
37             for (int  a = 0, b = min.length() - i; b != min.length() + 1; a++, b++)
38             {
39                 // 取短字符串的的子串,并判断该子串在长字符串中是否存在
40                 String sub = min.substring(a, b);
41                 if (max.contains(sub))
42                     return sub;
43             }
44         }
45         return null;
46     }
47
48 }
时间: 2024-10-22 08:13:11

Java练习之最大相同子串的相关文章

java求最长公共子串的长度

1这道题目就是给定两个字符串,然后求这两个字符串的最长公共子串的最大长度,假设我的f()方法是来求两个字符串的最大公共子串,从头开始逐一比较,如果相等,则 继续调用这个方法,使得递归的长度+1,如果不相等,则只要比较s1截掉一个和s2比较,和s2截掉和s1比较,两个中的最大者,如果s1或者s2中有一个长度为0,则最大公共长度就是0,return 2.代码示例: package zzl; public class 最长公共子串 { public static void main(String[]

JS正则表达式大全(整理详细且实用)

JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*".

JS正式表达式大全

正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配&q

javascript之正则表达式基础知识小结

javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料. 元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要用“\”来进行转移. 如果记不清楚那些标点符号需要转移,可以在使用标点符号时都使用反斜杠“\” 简单匹配 1.直接量 /javascript/ 匹配带有“javascript”的字符串 比如“javascript is an object-oriented scripting language” 2.[

JS正则表达式大全【转】

正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配&q

正则表达式中的特殊字符 字符 含意

JS正则表达式大全(整理详细且实用) 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配&quo

js 验证正则

字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a&quo

正则表达式(特殊字符)

字符  含意  \  做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*".   ^  匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An

js正则表达式大全

正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配&q