您的位置:首页 > 编程语言 > Java开发

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: