不错:
- /*
- 已知两个字符串
- String a = "abcdefghijklmnopqrstuvwxyz";
- String b="1234567890abcdfrgtddd12321414";
- 编写代码求出这两个字符串中最大公共字符串
- (最大公共字符串:比如 “abc123edf”和"bc123jg"的最大公共字符串是“bc123”)。
- 上传代码的时候将运算结果截图一起提交。
- 需求:求两个字符串的最大公共子串
- 思路:
- 1.定义一个获得最大公共子串的方法
- 2-先比较两字符串的长度,取长度短的字符串进行字符串遍历
- 3-截取较短子串 用substring方法 包含头 不包含尾
- 通过获取短字符串的头尾角标 截取不同的字符串
- 用一个临时字符串遍量 记住 较短字符串截取的子串
- 4.进行判断较长的字符串是否包含短字符串 如果是返回此临时变量字符串
- 如果不是 短串长度从1开始截取子串与长串比较 如此循环 直到找到相同的最大子串
- 循环完毕 没有公共串 返回null
- 5-主函数调用方法 打印输出
- */
- class Test23
- {
- public static void main(String[] args)
- {
- String a = "abcdefghijklmnopqrstuvwxyz";
- String b = "1234567890abcdfrgtddd12321414";
-
- sop(getMaxString(a,b));
- }
- //定义一个方法进行求最大公共字符串
- public static String getMaxString(String s1,String s2)
- { //比较两字符串的长度
- String max=s1.length()>s2.length()?s1:s2;
- String min=(max==s1)?s2:s1;
- for(int x=0;x < min.length();x++) //遍历长度较短的字符串 减少比较次数
- { //从y位置开始取 到z的前一位结束 z对于length 前一位刚好是最大位置
- for(int y=0,z=min.length()-x; z!=min.length()+1;y++,z++)
- {
- String temp=min.substring(y,z); // 包含头,不包含尾
- if(max.contains(temp))
- return temp;
- }
- }
- return null;
- }
- public static void sop(Object obj)
- {System.out.println(obj);
- }
- }
复制代码 |