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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 公子-醉香 中级黑马   /  2013-12-14 22:12  /  920 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class StringTest {
  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 String s1="sasasaworklkfdkfkd";
  5.                 String s2="fddworkitmh";
  6.                 show(getMaxSubString(s1,s2));
  7.         }
  8.         public static String getMaxSubStrng(String s1,String s2){
  9.                 for(int x=0;x<s2.length();x++){
  10.                         //下面的这个判断条件有点抽象,理解了半天还是没理解清楚,有谁给我解释一下?
  11.                         for(int y=0,z=s2.length()-x;z!=s2.length()+1;y++,z++){
  12.                                 String temp =s2.substring(y,z);
  13.                                 if(s1.contains(temp)){
  14.                                         return temp;
  15.                                 }
  16.                         }
  17.                 }
  18.                 return "";
  19.         }
  20.        
  21.         public static void show(String str){
  22.                 System.out.println(str);
  23.         }
  24. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

2 个回复

倒序浏览
  • //这是求最长公共子串的问题。假设这个最长公共子串为String temp。temp的长度最大为s2.length()。
  • //外层循环是在遍历temp各种可能的长度。每次循环时设置temp长度为s2.length()-x。
  • for(int x=0;x<s2.length();x++)
  • {
  •                        //temp长度确定后,遍历其在s2中的起始位置。每次循环时temp起始位置设为y,结束位置z。
  •                        //z为y+s2.length()-x。
  •                        //为了保证temp长度不变,y和z每次循环都加1。直到z到达s2最后。
  •                         for(int y=0,z=s2.length()-x;z!=s2.length()+1;y++,z++){
  •                                 String temp =s2.substring(y,z);
  •                                 if(s1.contains(temp)){
  •                                         return temp;
  •                                 }
  •                         }
  • }

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
回音 发表于 2013-12-14 22:45
  • //这是求最长公共子串的问题。假设这个最长公共子串为String temp。temp的长度最大为s2.length()。
  • ...

  • 看了好一会,还在理解中.感谢高手^^^^^^
    回复 使用道具 举报
    您需要登录后才可以回帖 登录 | 加入黑马