Я работал над тем, что проверяет, правильно ли сформирован файл HTML (для простоты нет самозакрывающихся тегов). Я отфильтровал все, кроме текста тега и «/», если он есть, используя сплит. Пример: p, / p
Я получаю значение true для таких вещей, как "head, title, / head, / title", но он проходит все мои другие тестовые случаи ..
Моя логика c для того, чтобы увидеть, правильно ли они сформированы, состоит в том, чтобы удалить из очереди теги, если она не содержит "/" pu sh в стек, если я проверю, чтобы увидеть значение из моя очередь совпадает со значением pop из моего стека et c.
Я чувствую, что совершаю какую-то логическую ошибку c, которую просто не вижу после того, как долго на нее смотрю.
while (!tags.isEmpty()) {
try {
temp = tags.dequeue();
if (!temp.contains("/")) {
openTags.push(temp);
counter++;
}
if (temp.contains("/")) {
String open = openTags.pop();
split = temp.split("/");
temp = split[1];
if (counter == 0) { //check if first item contained "/" (automatically invalid)
return false;
}
if (!temp.equalsIgnoreCase(open)) {
return false;
}
}
} catch (EmptyCollectionException ex) {
Logger.getLogger(TagValidation.class.getName()).log(Level.SEVERE, null, ex);
}
}