publicstaticvoidmain(String[] args){String description="z x z c v b n m";String[] key={"z","v"};extractSummary(description,key);System.out.println(extractSummary(description,key));}privatestaticStringextractSummary(String description,String[] key){String[] sDescription = description.split(" ");int minLength=Integer.MAX_VALUE;int pBegin=-1;int pEnd=-1;//key的指针int[] keyFound=newint[key.length];for(int i =0; i < sDescription.length; i++){Arrays.fill(keyFound,0);String word1=sDescription[i];int index=findKeyWorld(key,word1);//没有找到if(index==-1){continue;}else{
keyFound[index]=1;}//第一次的尾指针int j;int p2=-1;//记录上一次的又边界if(p2!=-1){
j=p2;}else{
j=i+1;}for(; j<sDescription.length ; j++){String word2=sDescription[j];int index2=findKeyWorld(key,word2);if(index2==-1||keyFound[index2]==1){//没找到关键字或者关键字已经出现过了continue;}else{//找到新的关键字
keyFound[index2]=1;if(sumOfKeyFound(keyFound)==key.length){//找齐了
p2=j;if(j-i+1<minLength){
pBegin=i;
pEnd=j;
minLength=j-i+1;}break;}}}}StringBuilder sb=newStringBuilder();for(int i = pBegin; i <=pEnd ; i++){
sb.append(sDescription[i]);}return sb.toString();}privatestaticintsumOfKeyFound(int[] keyFound){int sum=0;for(int i =0; i < keyFound.length; i++){
sum += keyFound[i];}return sum;}privatestaticintfindKeyWorld(String[] keyWord,String s){for(int i =0; i < keyWord.length; i++){if(s.equals(keyWord[i])){return i;}}//没找到return-1;}