黑马程序员技术交流社区

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

作者: 谭培龙    时间: 2012-7-26 18:14
标题: 关于String的问题
本帖最后由 谭培龙 于 2012-7-27 00:51 编辑
  1. class  StringTest3
  2. {
  3.         public static String getMaxSubString(String s1,String s2)
  4.         {
  5.                 String max="",min ="";
  6.                 max = (s1.length()>s2.length())?s1:s2;

  7.                 min = (max==s1)?s2:s1;

  8.                 for (int x=0;x<min.length() ;x++ )
  9.                 {
  10.                         for (int y=0,z=min.length()-x;z!=min.length() ;y++,z++ )
  11.                         {
  12.                                 String temp=min.substring(y,z);

  13.                                 //System.out.println(temp);
  14.                                 if(max.contains(temp))//if(indexOf(temp)!=-1)
  15.                                         return temp;
  16.                         }
  17.                 }
  18.                 return "";
  19.         }
  20.         public static void main(String[] args)
  21.         {
  22.                 String s1="abcwerthelloyuireu";
  23.                 String s2="cbhellobnm";
  24.                 System.out.println(getMaxSubString(s1,s2));
  25.         }
  26. }
复制代码
1,内for循环里面的Z代表什么?
2,String temp=min.substring(y,z);//这句话是什么意思?
3,return "";这里可以把方法改成void这里不写吗?
作者: 罗宵    时间: 2012-7-26 18:33
这个题就是将min字符串一次减少一位去和max比较,看是否属于max;
z是min字符串中的一个索引。
String temp=min.substring(y,z);这个是从min中截取一个字符串索引从y到z,然后赋给temp。
如果改成void之后可以不写return "",但是里面的内容也要改
for(int x=0; x<min.length(); x++){                       
                        //我们用y表示min串的头角标,z表示min串的尾角标.
                        for(int y=0,z=min.length()-x; z<=min.length(); y++,z++){
                                String temp = min.substring(y,z);
                                if(max.contains(temp)){
                                        System.out.println(temp);
                                        return;
                                }
                        }
                }
并且主方法中getMaxSubString(s1,s2);就可以了
附张图

2.jpg (60.75 KB, 下载次数: 12)

2.jpg

作者: 王渠    时间: 2012-7-26 18:39
  1. class  StringTest3
  2. {
  3.         public static String getMaxSubString(String s1,String s2)
  4.         {
  5.                 String max="",min ="";
  6.                 max = (s1.length()>s2.length())?s1:s2;//得到了两个字符串最长长度和最短长度。

  7.                 min = (max==s1)?s2:s1;

  8.                 for (int x=0;x<min.length() ;x++ )
  9.                 {
  10.                         for (int y=0,z=min.length()-x;z!=min.length() ;y++,z++ )
  11.                         {
  12.                                 
复制代码

作者: 王渠    时间: 2012-7-26 18:43
class  StringTest3
{
        public static String getMaxSubString(String s1,String s2)
        {
                String max="",min ="";
                max = (s1.length()>s2.length())?s1:s2;//这里获取到两个字符串长度的最大值和最小值。

                min = (max==s1)?s2:s1;

                for (int x=0;x<min.length() ;x++ )//外层循环是用来控制temp子串的长度的,当内层循环完一次后,外层+1,temp的长度就减少1.
                {
                        for (int y=0,z=min.length()-x;z!=min.length() ;y++,z++ )//这里y是被截取的短字符串的头角标,z是尾角标。y和z同时自增,是保证长度。
                        {
                                String temp=min.substring(y,z);

                                //System.out.println(temp);
                                if(max.contains(temp))//if(indexOf(temp)!=-1)//如果截取到了符合标准的字符串,就为真,返回子串。
                                        return temp;
                        }
                }
                return "";//因为没有截取到。返回了一个空字符串
        }
        public static void main(String[] args)
        {
                String s1="abcwerthelloyuireu";
                String s2="cbhellobnm";
                System.out.println(getMaxSubString(s1,s2));
        }
}


作者: 王楠    时间: 2012-7-26 18:49
因为你的方法是有返回类型值得,所以不能return void的
z是尾角标。y和z同时自增,是保证长度





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