java算法
2015-09-09 14:56
344 查看
看到一个博主的文章,于是自己写了一个实现的方法。
package test;
import java.util.ArrayList;
import java.util.List;
/**
* 给定一个字符串S:“BLFBFSYDLEAKLFBYM”,和一个关键字T:“LBY”,求出在S中包含T的最小字符串?
* 那么应该求出最小字符串:“LFBY”
* @author Xief
*
*/
public class Test360 {
public static void main(String[] args){
Test360 test360=new Test360();
List<String> indexList=new ArrayList<String>();
String originalString="BLFBFSYDLEAKLFBYM";
char[] originalChars=originalString.toCharArray();
String keyWord="BB";
char[] keyWordChars=keyWord.toCharArray();
String aimString="";
for(int i=0;i<originalChars.length-keyWordChars.length;i++){
String tempString=test360.getKeyWordByBeginIndex(originalChars, keyWordChars, i);
if(i==0){
aimString=tempString;
}else{
if(aimString.length()>tempString.length()&&!tempString.equals("")){
aimString=tempString;
}
}
}
System.out.println(aimString);
}
public String getKeyWordByBeginIndex(char[] originalChars,char[] keyWordChars,int no){
List<Integer> list=new ArrayList<Integer>();
int reset=no;
for (int i = 0; i < keyWordChars.length; i++) {
for (int j = reset; j < originalChars.length; j++) {
char tempCharFromOriginal = originalChars[j];
char tempCharFromKey = keyWordChars[i];
if (tempCharFromOriginal == tempCharFromKey) {
list.add(j);
reset=j+1;
break;
}
}
}
String aimString=new String(originalChars);
if(list.size()==keyWordChars.length){
aimString=aimString.substring(list.get(0),list.get(list.size()-1)+1);
}else{
aimString="";
}
return aimString;
}
}
相关文章推荐
- 菲波那切数列的JAVA算法
- JAVA算法(冒泡排序)
- java算法
- android面试java算法题【安卓进化四】
- JAVA算法题
- java算法事例:连通性
- java算法:数组
- java算法:堆栈ADT及实例
- java算法:分治法
- java算法:插入排序
- Java算法排序之--简单排序、堆排序
- java算法---选择排序
- Java算法——O(n)查询数列中出现超过半数的元素
- 一道java算法题分析
- java算法每日一练
- java算法3 选择排序
- 分金币(Spreading the Wealth, UVa 11300)【JAVA算法实现】
- Java算法-奇怪的分式
- 蓝桥杯:基础练习 字母图形【JAVA算法实现】
- java算法大全