关于 java中 求两个字符串中最大的公共子串之引发对return的用法探讨

问题:求两个字符串中最大的公共子串;

思路:

   1.判断短的那个字符串在不在长的字符串里;

   2.如果不在,然后对短的字符串依次进行递减操作,然后再判断在不在长的字符串里;

   3.递减的时候注意:  比如要求 "abcdef" 和 "abaacdef"最大公共子川,那么abcdef整个不在后者里面,那么接下来abcdef减掉一个,就是abcde或者bcdef,只有这样才能避免漏            掉。然后依次递减,找到规律:减掉一个时候有两种情况,减掉两个时候,有三种情况……


看一下代码:

class Demo

{

public static String get(String str1,String str2)

{  
int len1=str1.length();
int len2=str2.length();
String max="",min="";
max=(len1>=len2) ? str1:str2;
min=(max==str1) ? str2:str1;
System.out.println("max="+max+"   min="+min);
for ( int a=0;a<min.length();a++ )
{
for (int x=0,y=min.length()-a;x<=a;x++,y++ )
{
if (max.contains( min.substring(x,y)))
{

        return min.substring(x,y);  //return作用是返回值并退出方法;
}
}
          }
return"zyf";    //上面for里面不是有return 语句了吗?为啥这里多此一举呢,这是因为for语句未必会执行,也即意味着for里                                                    // 的return 语句未必会执行,那么假如没有return “zyf”,那么get()方法就有可能没有返回值,所以编译就                                                            // 会报错。同理在if语句里也是这样的,只有if(){return……}或者只有if(){return……} else if(){return……}

                                     //编译就会报错,改进措施:1.就像本例一样,再加一个return; 2.使用 if else组合,或者if  elseif    else组                                                           //合,目的都是确保至少有一个return肯定会执行到。

}

public static void main(String[] args) 
{
          String  str1 = "abce1af";
        String str2 = "abce1ffaaaaaaf";
          System.out.println(get(str1,str2));
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值