黑马程序员技术交流社区

标题: 我来挑战下毕老师,有来点评下的吗?零基础一个,大神不要喷我 [打印本页]

作者: 康师傅-蛋黄派    时间: 2014-11-27 23:57
标题: 我来挑战下毕老师,有来点评下的吗?零基础一个,大神不要喷我
  1. /*
  2. 4,获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。
  3.         "abcwerthelloyuiodef"
  4.         "cvhellobnm"
  5.         思路:
  6.                 1,将短的那个子串按照长度递减的方式获取到。
  7.                 2,将每获取到的子串去长串中判断是否包含,
  8.                         如果包含,已经找到!。
  9. */

  10. class  StringTest3
  11. {
  12.         /*
  13.         练习四。
  14.         */
  15.         public static String getMaxSubString(String s1,String s2)
  16.         {

  17.                 String max = "",min = "";

  18.                 max = (s1.length()>s2.length())?s1: s2;

  19.                 min = (max==s1)?s2: s1;
  20.                
  21. //                sop("max="+max+"...min="+min);
  22.                 for(int x=0; x<min.length(); x++)
  23.                 {
  24.                         for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++)
  25.                         {
  26.                                 String temp = min.substring(y,z);
  27.                                
  28.                                 sop(temp);
  29.                                 if(max.contains(temp))//if(s1.indexOf(temp)!=-1)
  30.                                         return temp;
  31.                         }
  32.                 }
  33.                 return "";
  34.         }


  35.         public static void main(String[] args)
  36.         {
  37.                 String s1 = "cvaanm";
  38.                 String s2 = "cvhellobnm";
  39.                 sop(getMaxSubString(s2,s1));
  40.         }

  41.         public static void sop(String str)
  42.         {
  43.                 System.out.println(str);
  44.         }
  45. }
复制代码

经过验证,毕老师的代码只适用两个字符串有一个最长字符串的情况,如果有两个同样长度的最长字符串,那么只能输出靠前面的一个,因为34行的return使getMaxSubString方法结束,所以结束getMaxSubString方法的方式不能使用return,而要通过外循环条件控制循环结束,我编写代码请看一楼(主要是改了for循环的结束方式)。
作者: 康师傅-蛋黄派    时间: 2014-11-28 00:01

  1. class Test3
  2. {
  3.         public static void getSame(String str1,String str2)
  4.         {
  5.                 String longStr=str1.length()>str2.length()?str1:str2;
  6.                 String shorStr=str1.length()>str2.length()?str2:str1;
  7.                 for (int x=0;x<shorStr.length();x++ )
  8.                 {
  9.                         for (int start=0,end=shorStr.length()-x;end<=shorStr.length();start++,end++ )
  10.                         {
  11.                                 String temp=shorStr.substring(start,end);
  12.                                
  13.                                 if (longStr.contains(temp))
  14.                                 {
  15.                                         sop(temp);
  16.                                         x=shorStr.length();
  17.                                 }
  18.                         }
  19.                 }
  20.         }
  21.         public static void main(String[] args)
  22.         {
  23.                 String str1="abcwerthelloyuiodef";
  24.                 String str2="cvhellobnmabcwe";
  25.                 getSame(str1,str2);
  26.         }
  27.         public static void sop(Object obj)
  28.         {
  29.                 System.out.println(obj);
  30.         }
  31. }
复制代码

两个字符串(str1和str2)我自己改了一下
作者: 船长    时间: 2014-11-28 01:15
善于发现,多总结,总有一天会成为大牛,楼主加油!
作者: 康师傅-蛋黄派    时间: 2014-11-28 11:24
还是船长给力,看的人都不给个回复
作者: java小兵    时间: 2014-11-28 12:00
这是第几天的知识点啊?
作者: 康师傅-蛋黄派    时间: 2014-11-28 12:31
java小兵 发表于 2014-11-28 12:00
这是第几天的知识点啊?

13day的,String的练习
作者: java小兵    时间: 2014-11-28 13:09
康师傅-蛋黄派 发表于 2014-11-28 12:31
13day的,String的练习

还没看到!!!
作者: 李天富    时间: 2014-11-28 15:07
楼主挺细心的,这都让你发现了。其实这样的问题多采用加入flag标记的方式,可读性要好一点。
作者: 李贵栋    时间: 2014-11-28 15:21
楼主这么会举一反三  再接再厉
作者: touch_world    时间: 2014-11-28 21:07
楼主有成为大牛的潜力,向你学习
作者: 康师傅-蛋黄派    时间: 2014-11-28 21:17
touch_world 发表于 2014-11-28 21:07
楼主有成为大牛的潜力,向你学习

大牛还是奢求,只求进入黑马了,共同努力吧。
作者: wf111sxwf    时间: 2014-11-28 23:00
毕老师的教学代码也不是完美的,我在学习IO流的时候已经发现了好几处的代码缺陷PS:也就是不完美的地方。编程
本身就是一个极具魅力的学科,青出于蓝胜于蓝也是常有的事,我们进入黑马的目标也就是超越老师,程序这个东西 我在接触了这么一段时间后也觉得没有完美的代码只有更符合需求的的代码,如果我们不抱着学无止境的态度去学习计算机语言的话,那么我们终将成为一个码农,而不是一个程序员。  以上所述顺纯个人观点,本人也就是一个编程菜鸟,只是抱着这样的态度去学习罢了,希望大神们不要喷我
作者: 娱尘    时间: 2014-11-28 23:21
勇气可嘉,善于思考,楼主赞一个
作者: Rain2692    时间: 2014-11-28 23:25
呵呵呵。。。。
作者: 雪落纷飞    时间: 2014-11-28 23:34
必须顶一下
作者: 这是我的地盘    时间: 2014-11-28 23:53
Well done !不过一看就是毕老师的风格@sop()。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2