В основном я пытаюсь создать алгоритм, который будет проверять, является ли данная строка строкой обложки для списка строк. Строка - это строка обложки, если она содержит символы для каждой строки в списке способом, который поддерживает порядок слева и справа от перечисленных строк. Например, для двух строк «cat» и «dog» «cadhpotg» будет строкой обложки, но «ctadhpog» не будет такой.Логический алгоритм, производящий истинный вывод, когда вывод должен быть ложным
Я создал алгоритм, однако он производит вывод true, когда вывод должен быть ложным, поскольку данная строка является обложкой String для строк List1 и list2, но не для list3.
Любая помощь в том, почему этот алгоритм производит неправильный вывод, будет высоко оценена.
public class StringProcessing2 {
//ArrayList created and 3 fields added.
public static ArrayList<String> stringList = new ArrayList<>();
public static String list1 = "phillip";
public static String list2 = "micky";
public static String list3 = "fad";
//Algorithm to check whether given String is a cover string.
public static boolean isCover(String coverString){
int matchedWords = 0;
stringList.add(list1);
stringList.add(list2);
stringList.add(list3);
//for-loops to iterate through each character of every word in stringList to test whether they appear in
//coverString in left to right order.
for(int i = 0; i < stringList.size(); i++){
int countLetters = 1;
for(int n = 0; n < (stringList.get(i).length())-1; n++){
if(coverString.indexOf(stringList.get(i).charAt(n)) <= (coverString.indexOf((stringList.get(i).charAt(n+1)),
coverString.indexOf((stringList.get(i).charAt(n)))))){
countLetters++;
if(countLetters == stringList.get(i).length()){
matchedWords++;
}
}
}
}
if(matchedWords == stringList.size()){
return true;
}
else
return false;
}
public static void main(String[] args) {
System.out.println(isCover("phillmickyp"));
}
}
Вы должны отлаживайте его с помощью IDE. Это поможет вам учиться. Я бы также начал с более легкого примера, чтобы понять, что не так. – BobTheBuilder
Возможно, это [test drive] (https://en.wikipedia.org/wiki/Test-driven_development). Здесь много возможностей для ошибок регрессии. – weston
Подумайте о примере 'phillip'. Это содержит 'i' перед символами' l' ** и ** '' 'непосредственно перед' i'. Подумайте, почему это делает вещи более сложными. –