Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def is_anagram(a: str, b:str):
- if len(a) != len(b): return False
- return ''.join(sorted(list(a))) == ''.join(sorted(list(b)))
- def is_palindrome(a: str, b:str):
- return a[::-1] == b
- def get_pow(a: int, b: int) -> int:
- if b == 1: return a
- if b == 0: return 1
- if b % 2 == 0:
- x = get_pow(a, b/2)
- return x * x
- return a * get_pow(a, b-1)
- def get_pow_modulo(a: int, b: int, c: int) -> int:
- if b == 1: return a
- if b == 0: return 1
- if b % 2 == 0:
- x = get_pow(a, b/2, c)
- return ((x%c) * (x%c))%c
- return ((a%c) * (get_pow(a, b-1)%c))%c
- def get_gcd(a: int, b: int) -> int:
- if a == 0: return b
- if b == 0: return a
- return get_gcd(b, a%b)
- def get_lcm(a: int, b: int) -> int:
- return a*b // get_gcd(a, b)
- def get_factorial(a: int) -> int:
- if a < 2: return 1
- return get_factorial(a-1) * a
- def get_combination(n: int, r: int) -> int:
- n_r = n-r
- divisor = max(n_r, r)
- r = get_factorial(min(n_r, r))
- total = 1
- for i in range(divisor+1, n+1):
- gcd = get_gcd(i, r)
- total *= i//gcd
- if r == 1: continue
- r //= gcd
- return total
- def get_permutation(n: int, r: int) -> int:
- total = 1
- for i in range(n-r+1, n+1):
- total *= i
- return total
- def get_substring_index(haystack: str, needle: str, prime: int=101) -> int:
- # using rabin-karp
- H = len(haystack)
- N = len(needle)
- h = 0 # hash value for haystack
- n = 0 # hash value for needle
- d = 256 # number of characters in the input alphabet
- x = get_pow_modulo(256, N-1, prime)
- for i in range(N):
- n =
- h =
- # get_substring_index("ASD", "asd" )
Add Comment
Please, Sign In to add comment