#java #string #recursion #data-structures
Вопрос:
Ввод
слово = фобарбаз
Содержание списка строк foob foo ba ba r z
Выход
истинный
ТЕСТОВЫЙ ПРИМЕР 2 Входное слово = foobarbaz
Содержание списка строк foo fooz ba r z
Выход
ложный
Мы можем предположить, что len(слово) >=1 и размер(содержимое списка строк) >>= 1
import java.util.ArrayList;
public class TilePossibilties {
public static void main(String[] args) {
String word = "foobarbaz";
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("foob");
arrayList.add("foo");
arrayList.add("ba");
arrayList.add("r");
arrayList.add("z");
System.out.println(check(word, arrayList));
}
private static boolean check(String word,ArrayList<String> arrayList) {
return isOkay(arrayList, word, "");
}
private static boolean isOkay(ArrayList<String> arrayList, String word, String candidate) {
for(int i = 0; i < arrayList.size(); i ){
String test = candidate arrayList.get(i);
if(test.equals(word)) {
return true;
}
if(word.startsWith(test)) {
boolean tempResult = isOkay(arrayList, word, test);
if(tempResult) {
return true;
}
}
test = candidate;
}
return false;
}
}
Комментарии:
1. В чем заключается ваш вопрос? Какая часть не работает?
Ответ №1:
Мы не фабрика домашних заданий. Однако я отмечу, что это проблема, о которой легче думать как о рекурсии. В псевдокоде:
match(word, set):
for each s in set:
if word == s
or word starts with s and match(word with s prefix removed, set - s):
return true;
return false;