关于 java中 求两个字符串中最大的公共子串之引发对return的用法探讨
2016-05-20 09:34
441 查看
问题:求两个字符串中最大的公共子串;
思路:
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));
}
}
思路:
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));
}
}
相关文章推荐
- 学习SpringMVC(十一)之视图和视图解析器
- java 零散知识汇总(初级)
- Java过滤器,SpringMVC拦截器之间的一顺序点关系
- ClassTemplateLoader模板使用学习
- shiro + mybatis+ spring (只用shiro的密码校验和并发剔除)——不用权限之类
- window eclipse 访问远程虚拟机 Hdfs
- java学习笔记5.20
- Myeclipse在线集成svn
- myeclipse10破解后,导出war包时报“SECURITY ALERT: INTEGERITY CHECK ERROR”进行了破解
- 简单谈谈Java类与类之间的关系
- Java的基础语法学习笔记
- Spring 异常捕获+log4j日志
- 292NimGame.java
- 如何手动配置Struts2项目
- Eclipse安装使用git管理项目
- java集合类
- [Java A] – is not an enclosing class
- Java通过ASCII码判断是否为数字
- Struts2框架action路径问题心得----》页面url请求怎么找action
- [译]Spring构建微服务