Удовлетворение условию во вложенном for-l oop перед присвоением значений - PullRequest
0 голосов
/ 23 апреля 2020

Я использую этот код из ранее задаваемых вопросов . В этом случае я специально спрашиваю, как я могу удовлетворить условие перед назначением переменных. Я думаю, что это связано с манипулированием начальными точками итераторов i и j. Однако при различных попытках в результате пропускалось слишком много значений, которые следовало добавить в список.

Я хочу сделать это, потому что чувствую, что присвоение значений каждые l oop только для игнорирования большинства из них не очень эффективно.

public class Main
{
    public static void main(String[] args)
    {
        String inputedWord = "ABIGWORD"; //the word being split
        int min = 3;                     //the minimum size of substring to print
        int max = 5;                     //the max size of substring to print

        for (String str : breakStringIntoAllPossibleSubstrings(inputedWord, min, max))
        {
            System.out.print("\n" + str);
        }
    }
}

public static List<String> breakStringIntoAllPossibleSubstrings(String str, int min, int max)
{
    List<String> listOfSubstrings = new ArrayList<>();

    String sub;
    int subLength;

    for(int i=0; i<=str.length()-min; i++)
    {
        for(int j=str.length(); j>=i+min; j--)
        {
            sub = str.substring(i, j); //Is there a way to only assign these values
            subLength = sub.length();  //if they satisfy the condition below?
            if (subLength >= min && subLength <= max)
            {                                  
                listOfSubstrings.add(sub);
            }
        }
    }
    //This line of code below can easily be commented out if I want the list to be returned in order by letter instead of size
    Collections.sort(listOfSubstrings, (item1, item2) -> item2.length() - item1.length());

    return listOfSubstrings;
}

ВЫХОД: (Это правильный и заданный вывод)

ABIGW
BIGWO
IGWOR
GWORD
ABIG
BIGW
IGWO
GWOR
WORD
ABI
BIG
IGW
GWO
WOR
ORD
...