1
class Solution:
2
def isValid(self, code: str) -> bool:
3
if code[0] != "<" or code[-1] != ">":
4
return False
5
i, n = 0, len(code)
6
stk = []
7
while i < n:
8
if code[i] == "<":
9
if i != 0 and code[i : i + 9] == "<![CDATA[":
10
if not stk:
11
return False
12
j = i + 9
13
while j + 3 <= n and code[j : j + 3] != "]]>":
14
j += 1
15
if code[j : j + 3] == "]]>":
16
i = j + 3
17
else:
18
return False
19
else:
20
start = i
21
isend = False
22
i += 1
23
if i >= n:
24
return False
25
if code[i] == r"/":
26
isend = True
27
i += 1
28
if i >= n:
29
return False
30
tag = ""
31
while i < n and code[i] != ">":
32
if not code[i].isupper():
33
return False
34
tag += code[i]
35
i += 1
36
if i >= n or len(tag) == 0 or len(tag) > 9:
37
return False
38
if isend:
39
if not stk or stk[-1] != tag:
40
return False
41
stk.pop(-1)
42
else:
43
if start != 0 and not stk:
44
return False
45
stk.append(tag)
46
i += 1
47
else:
48
if not stk:
49
return False
50
while i < n and code[i] != "<":
51
i += 1
52
return not stk

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0