求两个字符串的最大公共子串
2015-06-06 11:33
495 查看
/*
* 看了点字符串的内容,写一下求两个字符串的最大公共子串的练习,
*
* 题目要求:获得两个字符串的最大公共子串
* 如:s1 = "asjkjktehellogjejava";
* s2 = "sjjtjjhello";
* 返回 s = "hello";
*
* 思路:为提高程序效率应选择对短的字符串进行操作,每次比较如未获得结果则将短的字符串长度减一以进行后续比较
*
* @author up淡然
*/
package stringdemo;
public class MaxSubString {
//求最大子串的方法
public static String maxSubString(String s1, String s2) {
//将s1,s2按照长度进行调序,s1为长串s2为短串
String max = (s1.length() > s2.length())? s1: s2;
String min = (max == s1)? s2: s1;
//所有可能的字符串的长度从0到短串的长度,从短串的最大串开始比较
for(int i = 0; i < min.length(); i++){
//每次比较从短串中可能的第一个子串开始比较,其中j++, k++用于移动可能子串的位置
for(int j = 0, k = min.length() - i; k != min.length(); j++, k++){
//将可能子串取出并进行比较,若得出结果则返回,否则程序返回null
String temp = min.substring(j, k + 1);
if(max.contains(temp))
return temp;
}
}
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//分别定义两个用于寻找最大公共子串的字符串
String s1 = "sjjthello java!helloj";
String s2 = "asjkhello java!jktehellogjejava";
//定义简单的输出
System.out.println("s1 = \"" + s1 + "\"");
System.out.println("s2 = \"" + s2 + "\"");
//输出语句中直接实现方法调用
System.out.println("the max subString of s1 and s2 is:" + maxSubString(s1, s2));
}
}
* 看了点字符串的内容,写一下求两个字符串的最大公共子串的练习,
*
* 题目要求:获得两个字符串的最大公共子串
* 如:s1 = "asjkjktehellogjejava";
* s2 = "sjjtjjhello";
* 返回 s = "hello";
*
* 思路:为提高程序效率应选择对短的字符串进行操作,每次比较如未获得结果则将短的字符串长度减一以进行后续比较
*
* @author up淡然
*/
package stringdemo;
public class MaxSubString {
//求最大子串的方法
public static String maxSubString(String s1, String s2) {
//将s1,s2按照长度进行调序,s1为长串s2为短串
String max = (s1.length() > s2.length())? s1: s2;
String min = (max == s1)? s2: s1;
//所有可能的字符串的长度从0到短串的长度,从短串的最大串开始比较
for(int i = 0; i < min.length(); i++){
//每次比较从短串中可能的第一个子串开始比较,其中j++, k++用于移动可能子串的位置
for(int j = 0, k = min.length() - i; k != min.length(); j++, k++){
//将可能子串取出并进行比较,若得出结果则返回,否则程序返回null
String temp = min.substring(j, k + 1);
if(max.contains(temp))
return temp;
}
}
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//分别定义两个用于寻找最大公共子串的字符串
String s1 = "sjjthello java!helloj";
String s2 = "asjkhello java!jktehellogjejava";
//定义简单的输出
System.out.println("s1 = \"" + s1 + "\"");
System.out.println("s2 = \"" + s2 + "\"");
//输出语句中直接实现方法调用
System.out.println("the max subString of s1 and s2 is:" + maxSubString(s1, s2));
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序