黑马程序员技术交流社区

标题: 关于String问题 [打印本页]

作者: 浪无痕-陈文坤    时间: 2013-8-5 20:10
标题: 关于String问题
本帖最后由 浪无痕-陈文坤 于 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



作者: 心灵之歌    时间: 2013-8-5 20:15
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:16
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 21:06
白堇翎 发表于 2013-8-5 20:20
不明白你是什么意思 是找出两个字符串中所有相同的,非连续的字符还是连续的字符 ...

连续最大,谢谢
作者: 浪无痕-陈文坤    时间: 2013-8-5 21:16
心灵之歌 发表于 2013-8-5 20:15
public class Hello  { public static String getMaxSubString(String s1,String s2) {   //进行判断,将长 ...

哥们,抱歉呀,有点乱,呵呵。




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