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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 浪无痕-陈文坤 中级黑马   /  2013-8-5 20:10  /  2095 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 浪无痕-陈文坤 于 2013-8-6 06:46 编辑

毕老师视频中,两字符串找最大相同字符串(连续最大),我想找出全部最大相同,不知道下面的可不可以,谢谢!(希望能给出其他方式)
public class Hello
{
public static String getMaxSubString(String s1,String s2)
{
  //进行判断,将长的字符串复制给max,将短的赋值给min
  String max = "",min = "",str;
  max = (s1.length()>s2.length())?s1:s2;
  min = (max==s2)?s1:s2;
StringBuffer sb = new StringBuffer();
  int i = 0,j;
  //进行遍历
   //外循环遍历的是元素的行数
  for(int x = 0;x<min.length();x++)
  {
   //内循环遍历的是控制元素减少
   for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
   {
    String temp = min.substring(y,z);
    //sop(temp);
    if(max.contains(temp))
           {        
                        j = z;
                        sb.append(temp + "\n");
                        if(++j == (min.length()+1))
                        return sb.toString();
           }
   }
  }
  return "";
}
public static void main(String[] args)
{
  String s1= "worldohellossaicwkkk";
  String s2 ="worlddhelloxcwkkk";

  sop(getMaxSubString(s1,s2));

}
public static void sop(String str)
{
                System.out.println(str);
}
}结果:
        world         hello
       cwkkk


评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

5 个回复

倒序浏览
public class Hello  { public static String getMaxSubString(String s1,String s2) {   //进行判断,将长的字符串复制给max,将短的赋值给min   String max = "",min = "",str;   max = (s1.length()>s2.length())?s1:s2;   min = (max==s2)?s1:s2; StringBuffer sb = new StringBuffer();   int i = 0,j;   //进行遍历    //外循环遍历的是元素的行数   for(int x = 0;x<min.length();x++)   {    //内循环遍历的是控制元素减少    for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)    {     String temp = min.substring(y,z);     //sop(temp);     if(max.contains(temp))            {                                 j = z;                         sb.append(temp + "\n");                         if(++j == (min.length()+1))                         return sb.toString();            }    }   }   return null; } public static void main(String[] args) {   String s1= "worldohellossa";   String s2 ="worlddhello";    sop(getMaxSubString(s1,s2));  } public static void sop(String str) {                 System.out.println(str); } }
回复 使用道具 举报
public class Hello
{
public static String getMaxSubString(String s1,String s2)
{
  //进行判断,将长的字符串复制给max,将短的赋值给min
  String max = "",min = "",str;
  max = (s1.length()>s2.length())?s1:s2;
  min = (max==s2)?s1:s2;
StringBuffer sb = new StringBuffer();
  int i = 0,j;
  //进行遍历
   //外循环遍历的是元素的行数
  for(int x = 0;x<min.length();x++)
  {
   //内循环遍历的是控制元素减少
   for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
   {
    String temp = min.substring(y,z);
    //sop(temp);
    if(max.contains(temp))
           {        
                        j = z;
                        sb.append(temp + "\n");
                        if(++j == (min.length()+1))
                        return sb.toString();
           }
   }
  }
  return null;
}
public static void main(String[] args)
{
  String s1= "worldohellossa";
  String s2 ="worlddhello";

  sop(getMaxSubString(s1,s2));

}
public static void sop(String str)
{
                System.out.println(str);
}
}
回复 使用道具 举报
不明白你是什么意思 是找出两个字符串中所有相同的,非连续的字符还是连续的字符
回复 使用道具 举报
白堇翎 发表于 2013-8-5 20:20
不明白你是什么意思 是找出两个字符串中所有相同的,非连续的字符还是连续的字符 ...

连续最大,谢谢
回复 使用道具 举报
心灵之歌 发表于 2013-8-5 20:15
public class Hello  { public static String getMaxSubString(String s1,String s2) {   //进行判断,将长 ...

哥们,抱歉呀,有点乱,呵呵。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马