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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

混点分 这题毕老师已经讲过  做一遍 再加深印象

23.png (4.12 KB, 下载次数: 22)

23.png

Test23.rar

1.03 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
@在路上 发表于 2014-12-12 22:14
混点分 这题毕老师已经讲过  做一遍 再加深印象

不错:
  1. /*
  2. 已知两个字符串
  3. String a = "abcdefghijklmnopqrstuvwxyz";
  4. String b="1234567890abcdfrgtddd12321414";
  5. 编写代码求出这两个字符串中最大公共字符串
  6. (最大公共字符串:比如 “abc123edf”和"bc123jg"的最大公共字符串是“bc123”)。

  7. 上传代码的时候将运算结果截图一起提交。



  8. 需求:求两个字符串的最大公共子串
  9. 思路:
  10.     1.定义一个获得最大公共子串的方法
  11.     2-先比较两字符串的长度,取长度短的字符串进行字符串遍历
  12.         3-截取较短子串  用substring方法  包含头 不包含尾
  13.             通过获取短字符串的头尾角标  截取不同的字符串  
  14.                  用一个临时字符串遍量 记住 较短字符串截取的子串
  15.         4.进行判断较长的字符串是否包含短字符串  如果是返回此临时变量字符串
  16.           如果不是 短串长度从1开始截取子串与长串比较  如此循环 直到找到相同的最大子串
  17.           循环完毕 没有公共串 返回null
  18.         5-主函数调用方法  打印输出
  19. */
  20. class  Test23
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 String a = "abcdefghijklmnopqrstuvwxyz";
  25.                 String b = "1234567890abcdfrgtddd12321414";
  26.             
  27.                         sop(getMaxString(a,b));

  28.         }
  29.         //定义一个方法进行求最大公共字符串
  30.           public static String getMaxString(String s1,String s2)
  31.         {      //比较两字符串的长度
  32.                     String max=s1.length()>s2.length()?s1:s2;
  33.                         String min=(max==s1)?s2:s1;

  34.                   for(int x=0;x < min.length();x++) //遍历长度较短的字符串 减少比较次数
  35.                         {  //从y位置开始取 到z的前一位结束   z对于length  前一位刚好是最大位置
  36.                              for(int y=0,z=min.length()-x; z!=min.length()+1;y++,z++)
  37.                                 {
  38.                                          String temp=min.substring(y,z); // 包含头,不包含尾
  39.                                          if(max.contains(temp))
  40.                                                  return temp;
  41.                                 }
  42.                         }
  43.                         return null;
  44.         }
  45.         public static void sop(Object obj)
  46.         {System.out.println(obj);
  47.         }
  48. }

复制代码
回复 使用道具 举报
顶贴,领题
回复 使用道具 举报
交作业咯

23.jpg (28.84 KB, 下载次数: 3)

23.jpg

Demo_23.zip

861 Bytes, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
加油啊 加油
回复 使用道具 举报
加油啊 加油
回复 使用道具 举报
领题,看看
回复 使用道具 举报
23期,继续刷题
回复 使用道具 举报
阳哥,23期的
  1. package exam29;
  2. public class Exam23 {
  3. public static void main(String[] args) {
  4.          
  5.          String a = "abcdefghijklmnopqrstuvwxyz";
  6.          String b="1234567890abcdfrgtddd12321414";
  7.          
  8.          String reStr="";
  9.          int size=0;
  10.          for(int i=0;i<a.length()-1;i++){
  11.                  for(int j=i+1;j<a.length()+1;j++){
  12.                          //a 按顺序切割出来的所有字符情况
  13.                      String s = a.substring(i,j);
  14.                            for(int ib=0;ib<b.length();ib++ ){
  15.                                    for(int jb=ib+1;jb<b.length()+1;jb++){
  16.                                            //b按顺序切割出来的所有情况
  17.                                            String sb = b.substring(ib, jb);
  18.                                            //记录两个相等并且字符长度最大的情况
  19.                                            if(s.equals(sb)){
  20.                                                    if(s.length()>size){
  21.                                                            size=s.length();
  22.                                                            reStr=s;
  23.                                                    }
  24.                                            }
  25.                                    }
  26.                            }
  27.                  }
  28.          }
  29.            System.out.println("最大公共字符串:"+reStr);         
  30. }
  31. }
复制代码



0.jpg (10.68 KB, 下载次数: 3)

0.jpg

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报

不错,继续努力。
回复 使用道具 举报

阳哥,我从29写到23了,其中24,25,26没分,是写得不行吗?求指教,求分,快哭了{:3_63:}
回复 使用道具 举报
乔乔看 发表于 2014-12-18 15:52
阳哥,我从29写到23了,其中24,25,26没分,是写得不行吗?求指教,求分,快哭了 ...

哎?应该是我没有看到吧?如果哪一题没有给你分,你把链接和楼层发给我。
回复 使用道具 举报
算法题……:P
回复 使用道具 举报
回帖领题
回复 使用道具 举报
领题来了
回复 使用道具 举报
回帖领题
回复 使用道具 举报
最大的公共字符串:abcd


Exam23.rar

556 Bytes, 阅读权限: 150, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
我来领题咯
回复 使用道具 举报
回帖领题
回复 使用道具 举报
领题 !!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马