1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| ''' Author: NEFU AB-IN Date: 2024-09-03 15:36:27 FilePath: \LeetCode\97\97.py LastEditTime: 2024-09-03 16:28:52 ''' import random from collections import Counter, defaultdict, deque from datetime import datetime, timedelta from functools import lru_cache, reduce from heapq import heapify, heappop, heappush, nlargest, nsmallest from itertools import combinations, compress, permutations, starmap, tee from math import ceil, comb, fabs, floor, gcd, hypot, log, perm, sqrt
from posixpath import abspath from string import ascii_lowercase, ascii_uppercase from sys import exit, setrecursionlimit, stdin from typing import Any, Callable, Dict, List, Optional, Tuple, TypeVar
TYPE = TypeVar('TYPE') N = int(2e5 + 10) M = int(20) INF = int(1e12) OFFSET = int(100) MOD = int(1e9 + 7)
setrecursionlimit(int(2e9))
class Arr: array = staticmethod(lambda x=0, size=N: [x() if callable(x) else x for _ in range(size)]) array2d = staticmethod(lambda x=0, rows=N, cols=M: [Arr.array(x, cols) for _ in range(rows)]) graph = staticmethod(lambda size=N: [[] for _ in range(size)])
class Math: max = staticmethod(lambda a, b: a if a > b else b) min = staticmethod(lambda a, b: a if a < b else b)
class Std: pass
class Solution: def isInterleave(self, s1: str, s2: str, s3: str) -> bool:
if len(s1) + len(s2) != len(s3): return False
@lru_cache(None) def dfs(i1: int, i2: int, i3: int, status: bool) -> bool: if i1 == len(s1) and i2 == len(s2) and i3 == len(s3): return True ans = False
if status: while i1 < len(s1) and i3 < len(s3): if s1[i1] == s3[i3]: ans = ans or dfs(i1 + 1, i2, i3 + 1, False) i1, i3 = i1 + 1, i3 + 1 else: break else: while i2 < len(s2) and i3 < len(s3): if s2[i2] == s3[i3]: ans = ans or dfs(i1, i2 + 1, i3 + 1, True) i2, i3 = i2 + 1, i3 + 1 else: break
return ans
return dfs(0, 0, 0, False) or dfs(0, 0, 0, True)
|