私は長い文といくつかの単語(文で検索する)を与えました。その文で検索するすべての単語を含む文の最小部分を見つけて、その部分を印刷する必要があります。
私はそれを試しました.1.最初に、与えられた文からすべての単語のすべての場所(インデックス)を取得します。2. 次に、これらの単語のインデックスから最小部分を見つけようとします。
しかし、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;
}
}
}