A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈圳 高级黑马   /  2013-2-25 13:15  /  1744 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈圳 于 2013-2-25 13:16 编辑

老师的解法:
  1. public  String getMaxString(String s1,String s2)
  2.         {
  3.                 String max="",min="";
  4.                 max=(s1.length()>s2.length())?s1:s2;
  5.                 min=(max.length()==s1.length())?s2:s1;
  6.                 for(int x=0;x<min.length();x++)//循环小串长度
  7.                 {
  8.                         for(int y=0,z=min.length()-x;z!=min.length();y++,z++)
  9.                         {
  10.                                 String temp=min.substring(y,z);
  11.                                 if(max.contains(temp))
  12.                                         return temp;
  13.                         }
  14.                 }
  15.                 return "";
  16.         }
复制代码
如:String s1="dsfhellojahellojavaoo",s2="java hellojavaodfafd hellojavaoosdfasd"
最大子串应为:hellojavaoo;
实现打印结果为:hellojavao;
因为获取到了多个子串,但没有判断,所有取了一个就当结果了.
我看了题目,然后自己解题;//用的是老师说的效率低的办法...但我感觉效率不低...
我做了计数,我的循环次数少一些.我另外定义的变量是为了判断是否有重复变量.如果老师的函数要解决这个问题,也需要定义,这俩个方法,到抵哪个效率高一些?
  1. package Day15;
  2. class Test1
  3. {
  4.         String s="haha";
  5.         public static void main(String[] args)
  6.         {
  7.                 String s1=new Test1().getString("dsfhellojahellojavaoo","java hellojavaodfafd hellojavaoosdfasd");
  8.                 System.out.println(s1);//我自定义的
  9.                 String s2=new Test1().getMaxString("java hellojavaodfafd hellojavaoosdfasd", "dsfhellojahellojavaoo");
  10.                 System.out.println(s2);//老师的解法
  11.         }
  12.         public String getString(String string1,String string2)
  13.         {
  14.                 int count=0;//定义一个循环计数变量
  15.                 int begin=0,end=1;
  16.                 String max="",min="";
  17.                 max=(string1.length()>string2.length())?string1:string2;
  18.                 min=(max.length()==string1.length())?string2:string1;
  19.                 String s1="",s2="",s3="";
  20.                 int i=0;
  21.                 while(end<=min.length())//运算的最大步数不能大于min小串的长度,否则越界了.
  22.                 {
  23.                         System.out.println("循环次数为:"+count+"次");
  24.                         count++;
  25.                         s1=min.substring(begin,end);
  26.                         if(max.contains(s1))
  27.                         {
  28.                                 end++;
  29.                                 s3=s1;
  30.                                 if(s2.length()<s3.length()||(s2.length()==s3.length()&&s2.compareTo(s3)<0))
  31.                                         s2=s3;
  32.                         }
  33.                         if(!max.contains(s1))//不属于他的子串时
  34.                         {
  35.                                 begin++;//
  36.                         }
  37.                 }
  38.                 return s2;
  39.         }
  40.         public  String getMaxString(String s1,String s2)
  41.         {
  42.                 int count=0;//定义循环计数变量
  43.                 String max="",min="";
  44.                 max=(s1.length()>s2.length())?s1:s2;
  45.                 min=(max.length()==s1.length())?s2:s1;
  46.                 for(int x=0;x<min.length();x++)//循环小串长度
  47.                 {
  48.                         for(int y=0,z=min.length()-x;z!=min.length();y++,z++)
  49.                         {
  50.                                 count++;
  51.                                 System.out.println("循环次数为:"+count+"次");
  52.                                 String temp=min.substring(y,z);
  53.                                 if(max.contains(temp))
  54.                                         return temp;
  55.                         }
  56.                 }
  57.                 return "";
  58.         }
  59.         
  60. }
复制代码
getString:hellojavaoo
getMaxString:hellojavao

评分

参与人数 1技术分 +1 收起 理由
李培根 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
{:soso_e142:}
回复 使用道具 举报
soso.......
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马