public class Substring {
public static void main(String[] args) {
String s1="abractyeyt";
String s2="dgdsaeactyey";
String s4="";
      for(int i=0;i<s1.length();i++){
       for(int j=i+1;j<s1.length();j++){
        String s3=s1.substring(i, j);
           if(s2.indexOf(s3)==-1){
            break;
        }else{
            s4=s3;   
        }
         }
      }
          System.out.println(s4);
}
}
找出s1与s2得最大字串(actyey)
我编写的程序为什么只打印了个y?
帮忙看看!

解决方案 »

  1.   


    public class Substring {
    public static void main(String[] args) {
    String s1="abractyeyt";
    String s2="dgdsaeactyey";
    String s4="";
          for(int i=0;i <s1.length();i++){
    //这里应该是j <=s1.length()
          for(int j=i+1;j <=s1.length();j++){
          String s3=s1.substring(i, j);
              if(s2.indexOf(s3)==-1){
              break;
          }else{
    if(s3.length() > s4.length) //这里比较这次匹配的字符串长度和以前匹配的最大字符串
              s4=s3; 
          }
            }
          }
              System.out.println(s4);
    }

      

  2.   


    public class Substring2 { 
    public static void main(String[] args) { 
    String s1="abractyeyt"; 
    String s2="dgdsaeactyey"; 
    String s4=""; 

    for(int i = 0; i < s1.length(); i++){ 
       for(int j = i + 1; j < s1.length(); j++){
       if(s2.indexOf(s1.substring(i,j)) != -1){
       if(s4.length() < s1.substring(i,j).length())
       s4 = s1.substring(i,j);
       continue;
       }
       else
       break;
       }

    System.out.println(s4); 

    } 你找最长的肯定要先判断下长度了
      

  3.   

    应该是先从找到S1的最大字串和s2比较,再找较小的S1的字串和s2比较,依次类推。
      

  4.   

    public class Substring { 
        public static void main(String[] args) { 
            String s1="abractyeyt"; 
            String s2="dgdsaeactyey"; 
            String s4=""; 
            
            for(int i = 0; i < s1.length(); i++)
            { 
               for(int j = s1.length(); j>i ; j--)
               {
                   if(s2.indexOf(s1.substring(i,j)) != -1)
                   {
                       if(s4.length() < s1.substring(i,j).length())
                           s4 = s1.substring(i,j);
                       break;
                   }
                   
               }
            } 
            System.out.println(s4); 
        } 

    这样也行
      

  5.   

    我重新写了看看吧!!
    import java.util.ArrayList;
    import java.util.List;
    public class Substring {
    public static void main(String[] args) {
    String s1="abractyeyt";
    String s2="dgdsaeactyey";
    List <String> list = new ArrayList <String> ();//可变数组的实现
      String max="";
          for(int i=0;i<s1.length();i++){
           for(int j=i+1;j<s1.length();j++){
            String s3=s1.substring(i, j+1);
               if(s2.indexOf(s3)==-1)
                break;
            else
                list.add(s3); 
             }
          }                 
                 max=list.get(0);
            for(int i=1;i<list.size();i++){
             if(list.get(i).length()>max.length()){
                max=list.get(i);
               }
          }
             System.out.println(max);   
        }
    }
      

  6.   

    如果楼主不是在练手的话
    return "abractyeyt">"dgdsaeactyey"?"abractyeyt":"dgdsaeactyey"
    就可以得出最大的字符串