Longest Path With Different Adjacent Characters LeetCode solution in Python
1class Solution:2def longestPath(self, parent: list[int], s: str) -> int:3def l_path_and_chain(4tree: dict[int, list[int]], s: str, root: int5) -> tuple[int, int]:6lp = lc1 = lc2 = 07for child, path, chain in (8(c, *l_path_and_chain(tree, s, c)) for c in tree[root]9):10lp = max(lp, path)11if s[child] != s[root]:12*_, lc2, lc1 = sorted((chain, lc2, lc1))1314return max(lp, lc1 + lc2 + 1), lc1 + 11516t = defaultdict(list)17for c, p in enumerate(parent):18t[p].append(c)19return l_path_and_chain(t, s, 0)[0]