我给出了一个长句子和一些单词(要在句子中搜索),我必须找到句子的最小部分,其中包含要在该句子中搜索的所有单词并打印该部分。
我试过了,1.首先从给定的句子中获取所有单词的所有位置(索引)。2.然后尝试从这些词的索引中找到最小的部分。
但我在实施第二部分时遇到问题。所以我想要一些建议,或者如果你建议任何其他可以让它快速的算法。
import java.util.*;
import java.io.*;
public class ShotestSubSegment2
{
static SearchStr[] search;
static String copystr;
public static void main(String s[])
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = in.readLine();
copystr = str.substring(0).toLowerCase();
int k = Integer.parseInt(in.readLine());
search = new SearchStr[k];
for(int i=0;i<k;i++)
{
search[i] = new SearchStr(in.readLine().toLowerCase());
getIndicesOf(search[i]);
if(search[i].noOfElements()==0)
{
System.out.println("No Segments Found");
return;
}
}
searchSmallestPart();//Dont getting Idea Of this
}
catch(Exception x){}
}
public static void getIndicesOf(SearchStr searchS)
{
String searchStr = searchS.getName();
int startIndex = 0, searchStrLen=0;
int index;
searchStr = searchStr.toLowerCase();
searchStrLen = searchStr.length();
while ((index = copystr.indexOf(searchStr, startIndex)) > -1)
{
searchS.add(index);
startIndex = index + searchStrLen;
}
}
}