Dada una string htmlCode que es el código HTML de una página web, la tarea es encontrar la etiqueta final que falta en el código HTML.
Ejemplos:
Input: htmlCode = "<!DOCTYPE html> <html> <head> <title> GeeksforGeeks </title> </head> <body> <button> </body> </html>" Output: </button> Input: htmlCode = "<!DOCTYPE html> <html> <body> <p>Hello</p> </html>" Output: </body>
Enfoque: la idea es utilizar la pila para realizar un seguimiento de las etiquetas de inicio actuales en el código HTML y si en algún momento hay una etiqueta final que no coincide con la parte superior de la pila que denota una etiqueta de inicio. Luego, la etiqueta que está en la parte superior de la pila debe cerrarse primero. Por lo tanto, la parte superior de la pila será la etiqueta faltante deseada en el código HTML.
A continuación se muestra la implementación del enfoque anterior:
Python
# Python implementation to find the # the missing end in the HTML code # Function to Auto complete the # missing tag in the html Code def autoComplete(s): # Split the html Code in line linesOfCode = list(s.strip().split("\n")) # Tags which are self closed doesn't # needs to be closed selfClosedTags = ["area", "base", "br", \ "col", "embed", "hr", "img", \ "input", "link", "meta", "param", \ "source", "track", "wbr"] n = len(linesOfCode) stack = [] # Loop to iterate over the # lines of code for i in range(n): j = 0 # Current Line line = linesOfCode[i] while j < len(linesOfCode[i]): # Condition to check if the current # character is a end tag in the code if j + 1 < len(line) and line[j] == "<"\ and line[j + 1] == "/": tag = [] j += 2 # Loop to get the tag while j < len(line) and\ "a" <= line[j] <= "z": tag.append(line[j]) j += 1 while j < len(line) and line[j] != ">": j += 1 if stack[-1] != tag: tag = stack[-1] return "</" + "".join(tag) + ">" stack.pop() # Condition to check if the current # character denotes the code is # of the HTML 5 elif j + 1 < len(line) and line[j] == "<"\ and line[j] == "!": continue # Condition to check if the current # tag is a start tag of the HTML Code elif line[j] == "<": tag = [] j += 1 # Loop to get the tag of the HTML while j < len(line) and\ "a" <= line[j] <= "z": tag.append(line[j]) j += 1 while j < len(line) and line[j] != ">": j += 1 # Condition to check if the # current tag is not a self closed tag if "".join(tag) not in selfClosedTags: stack.append(tag) j += 1 # Condition to check if any tag # is unbalanced then return that tag if stack: tag = stack.pop() return "</" + "".join(tag) + ">" return -1 # Driver Code if __name__ == "__main__": s = """<! DOCTYPE html> <html> <head> <title> GeeksforGeeks </title> </head> <body> <button> </body> </html>""" tag = autoComplete(s) print(tag)
</button>
Publicación traducida automáticamente
Artículo escrito por master_abhig y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA