Передо мной была поставлена задача найти все подпоследовательности для строки.
Например, если строка "bat", подпоследовательность возвращает [, b, ba, at, bt, t]
Обратите внимание, что в нем нет всех перестановок строки, поскольку она должна идти по порядку. Первая строка является пустой строкой, и это, очевидно, требуется инструкциями.
Другим примером является строка "brat". Ожидаемый результат для этого будет [, a, at, b, ba, bat, br, бюстгальтер, brat, brt, bt, r, ra, rat, rt, t]
Я пытался написать программу, которая использовала бы рекурсию и давала бы мне вывод, но я только дошел до сих пор. Я уверен, что понимаю рекурсию, но я не знаю, как бы я попытался закодировать эту проблему.
Это то, что я имею до сих пор:
import java.util.ArrayList;
public class Sequences {
public static ArrayList<String> sequences(String s) {
ArrayList<String> list = new ArrayList<String>();
return subsequences(s, list);
}
public static ArrayList<String> sequences(String s, ArrayList<String> list) {
list.add("");
if (s.length() == 0)
list.add(s);
else {
list.add(s);
String temp = s.substring(0,1);
String next = s.substring(1, s.length());
list.add(temp);
sequences(next);
}
return list;
}
}
Я также написал тестер очень быстро, чтобы я мог проверить проблему, поскольку тестер нам не предоставили:
public class tester {
public static void main(String[] args) {
System.out.println(Sequences.sequences("at"));
}
}
Вывод, который я получаю, это [, a], когда я должен был получить [, a, at, t]
Любая помощь будет приветствоваться!