java语言编程:求两个字符串的最大子串

来源:互联网 发布:极点五笔 centos 编辑:程序博客网 时间:2024/05/02 05:03
[java] view plaincopy
  1. package stringTest;  
  2.   
  3. public class StringDemo4 {  
  4.     public static void main(String[] args) {  
  5.         String str1 = "Ilikejavaverymuch";  
  6.         String str2 = "java is useful";  
  7.           
  8.         StringDemo4 sd4 = new StringDemo4();  
  9.         sd4.sop(sd4.getMaxSubString1(str1, str2));  
  10.     }  
  11.   
  12.     /** 
  13.      * 求两个字符串的最大相同子串,思路: 
  14.      * 1、将短的字符串,按照长度递减的方式获取子串(核心) 
  15.      * 2、将每个获取的子串,判断是否在长的字符串中存在 
  16.      * */  
  17.     String getMaxSubString1(String str1, String str2) {  
  18.         String maxStr ="", minStr = "";  
  19.         maxStr = str1.length() > str2.length() ? str1:str2;  
  20.         minStr = (maxStr == str1) ? str2:str1;  
  21.           
  22.         for(int i = 0; i < minStr.length(); i++){  
  23.             for(int start = 0, end = minStr.length()-i; end <= minStr.length(); start++, end++){  
  24.                 if (maxStr.contains(minStr.substring(start, end))){  
  25.                     return minStr.substring(start, end);  
  26.                 }  
  27.             }  
  28.         }  
  29.           
  30.         return "";  
  31.     }  
  32.       
  33.     //打印字符串  
  34.     void sop(String str){  
  35.         System.out.println("str = " + str + "");  
  36.     }     
  37. }  

打印结果:

str = java

0 0
原创粉丝点击