Этот код, который я использую, взят из ранее заданного вопроса. Этот вопрос задавался и отвечался много раз, но я специально прошу, чтобы порядок был указан по размеру от наибольшего к наименьшему ,
public static void main(String[] args)
{
String inputedWord = "ABIGWORD";
for (String str : breakStringIntoPieces(inputedWord, 2))
{
System.out.print("\n") + str;
}
}
//Pass in word and minimum
//substring length to print
public static List<String> breakStringIntoAllPossibleSubstrings(String str, int num)
{
List<String> listOfSubstrings = new ArrayList<>();
Boolean insideLoop = false;
for(int i=0; i<=str.length()-num; i++)
{
for(int j=str.length(); j>=i+num; j--)
{
//System.out.println(str.substring(i, j));
if (insideLoop) //This is simply to not add the complete string to the
{ //list. Only substrings
listOfSubstrings.add(str.substring(i, j));
}
insideLoop = true;
}
}
return listOfSubstrings;
}
OUTPUT:
ABIGWOR
ABIGWO
ABIGW
ABIG
ABI
AB
BIGWORD
BIGWOR
BIGWO
BIGW
BIG
BI
IGWORD
IGWOR
IGWO
IGW
IG
GWORD
GWOR
GWO
GW
WORD
WOR
WO
ORD
OR
RD
DESIRED OUTPUT: (Не в специальном порядке, кроме размера. Это просто напечатанный пример.
ABIGWOR
BIGWORD
ABIGWO
BIGWOR
IGWORD
GWORD
ABIGW
IGWOR
BIGWO
IGWO
ABIG
BIGW
WORD
GWOR
GWO
ORD
ABI
BIG
IGW
WOR
AB
BI
IG
GW
WO
OR
RD
Я мог технически просто l oop через возвращенный список и найти все самые большие подстроки, но это добавило бы слишком много шагов. Мне интересно, есть ли возможность сделать это в данном методе. Я думаю, что процесс включает в себя манипулирование итераторами i и j после каждого л oop?