黑马程序员技术交流社区

标题: 这是一道面试题,求解。。。。。 [打印本页]

作者: 孙建志    时间: 2015-11-14 21:24
标题: 这是一道面试题,求解。。。。。
两个字符串的最大相同子串。
                 比如:
                 "sadabcdfghjkl"
                  werabcdtyu"
作者: 18537947462    时间: 2015-11-14 21:28
先顶再看
作者: 杨凯瑞    时间: 2015-11-14 21:36
看不懂啊  !!   ??
作者: 冰霜之卅    时间: 2015-11-14 21:42
真的是面试题吗? 好难啊。。。。。
说说目前水平的思路吧:
先找取 最短那个字符串   
用双重for循环 。 排列组合出所有字符串可能存在的情况。
(就这里最麻烦。。。)
用ArrayList存放。
排完序之后 从大到小依次存入Set集合。(唯一)。
最后迭代取出  用contians方法 判断, 如果相等就返回该字符串 。break;
作者: oup    时间: 2015-11-14 21:46
看到过 待我回忆下!
作者: 醉叶惜秋    时间: 2015-11-14 22:33
没理解啥意思
作者: sshh11    时间: 2015-11-14 23:10
不知道 题目具体问什么
作者: 申请补助没成功    时间: 2015-11-14 23:10
给我点时间。。。。
作者: wx_ao22R6RC    时间: 2015-11-15 12:10
输入两个字符串,比较出两个字符串长度的大小,再利用循环把得到的字符串长度小的(例如“abcde”可以分为abcd,bcde,abc,bcd,cde,ab,bc,cd,de,a,b,c,d,e,)那个去和大的比,看大的中是否contains字符串小的那个,如果有就把他添加到集合中,最后得到最大长度那个

作者: 许鹏飞    时间: 2015-11-15 14:47
先判断哪个是最大子串,用双重for循环,看大字符串是否包含小字符串,不包含,就减一位,就这么循环,一直循环到有为止,此时就是最大的字串
作者: silentCat    时间: 2015-11-15 18:07
不知有没漏洞,欢迎指教
  1. public class MatchSubstring {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 String s1="sadabcdfghjkl";
  7.                 String s2="werabcdtyu";
  8.         //长度短的是s1
  9.                 if(s1.length()>s2.length()){
  10.                         String s=s2;
  11.                         s2=s1;
  12.                         s1=s;
  13.                 }
  14.                 //从长到短遍历s1,判断s2是否包含
  15.                 String s=panDuan(s1,s2);
  16.                 System.out.println(s);
  17.                
  18.         }

  19.         private static String panDuan(String s1, String s2) {
  20.                 int len=s1.length();
  21.                 String s=null;
  22.                 //遍历s1的长度
  23.                 a:for(int i=len;i>0;i--){
  24.                         //遍历长度相同的子串
  25.                         for(int j=0;j<len-i+1;j++){
  26.                                 String ss=s1.substring(j,j+i-1);
  27.                                 //判断是否包含
  28.                                 if(s2.contains(ss)){
  29.                                         s=ss;
  30.                                         //当找到后跳出所有循环
  31.                                         break a;
  32.                                 }
  33.                         }
  34.                        
  35.                 }
  36.                 if(s==null){
  37.                         return "不存在";
  38.                 }
  39.                 return s;
  40.         }
  41. }
复制代码




作者: dsap    时间: 2015-11-15 18:36
什么意思?
作者: 孙建志    时间: 2015-11-15 21:10
dsap 发表于 2015-11-15 18:36
什么意思?

截取两个字符串中最大相同的子字符串
作者: 孙建志    时间: 2015-11-15 21:11
dsap 发表于 2015-11-15 18:36
什么意思?

截取两个字符串中最大相同子字符串
作者: 孙建志    时间: 2015-11-15 21:20
silentCat 发表于 2015-11-15 18:07
不知有没漏洞,欢迎指教

没看太明白,等后天放假在看看,不过跟我的想法不太相同 。我的还没写完。。。。
         * 分析:
         *                for嵌套循环,外循环判断一共需要循环的次数,       
         *                内循环从小字符串的第一个字符开始,进行判断,大字符串是否包含小字符串,如果包含进行向后判断,如果不包含则跳出循环,
         *                在判断时记录长度 计数器累加思想 (count),最后取count的最大值,并输出字符串
         *               
         */
        public static void main(String[] args) {
                 String s1="sadabcdfghjkl";
                 String s2="werabcdtyu";
                 for (int i=0; i<s2.length(); i++) {
                         for (int j=i; j<s2.length(); j++ ) {
                                 if (s2.contains(s1.substring(j,j+1))) {
                                         
                                 }
                         }
                 }
        }
}
作者: 孙建志    时间: 2015-11-15 21:21
冰霜之卅 发表于 2015-11-14 21:42
真的是面试题吗? 好难啊。。。。。
说说目前水平的思路吧:
先找取 最短那个字符串   

这么费事吗?你这一说这题真的好难啊
作者: pl8236448    时间: 2015-11-15 21:41
看不懂..
作者: 1379号监听员    时间: 2015-11-15 21:56
这题有点意思
作者: yaoyeqing    时间: 2015-11-15 22:24
拿短的那个字符串一个一个缩短字符去跟第一个字符串比较,就像移动固定的长度的楼梯一样
作者: 小笨笨天    时间: 2015-11-15 22:48
以前写过  不怎么记得了   好像思路是 用第二个字符不断的从开头和结尾缩短一个字符,在与第一个字符串进行比较。这样不断的比较,知道找的相匹配的
作者: 大耳冬    时间: 2015-11-15 22:59
用coolection的contain方法就可以了吧
作者: nice非飞    时间: 2015-11-15 23:19
不懂啊。。。。等大神
作者: 蓦然回首102    时间: 2015-11-18 17:28
看不懂!




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