diff --git a/clone-graph/parkhojeong.py b/clone-graph/parkhojeong.py new file mode 100644 index 0000000000..05ef48209c --- /dev/null +++ b/clone-graph/parkhojeong.py @@ -0,0 +1,31 @@ +""" +# Definition for a Node. +class Node: + def __init__(self, val = 0, neighbors = None): + self.val = val + self.neighbors = neighbors if neighbors is not None else [] +""" + +from typing import Optional +class Solution: + def cloneGraph(self, node: Optional['Node']) -> Optional['Node']: + + visited = {} + + def deep_copy(node): + if node is None: + return None + + cur = Node(node.val) + visited[node.val] = cur + + cur.val = node.val + for neighbor in node.neighbors: + if neighbor.val in visited: + cur.neighbors.append(visited[neighbor.val]) + else: + cur.neighbors.append(deep_copy(neighbor)) + + return cur + + return deep_copy(node) diff --git a/longest-repeating-character-replacement/parkhojeong.py b/longest-repeating-character-replacement/parkhojeong.py new file mode 100644 index 0000000000..5f858f1c42 --- /dev/null +++ b/longest-repeating-character-replacement/parkhojeong.py @@ -0,0 +1,25 @@ +class Solution: + def characterReplacement(self, s: str, k: int) -> int: + freq = [0] * 26 + max_len = 0 + + def idx(ch): + return ord(ch) - ord('A') + + left = 0 + for i in range(len(s)): + freq[idx(s[i])] += 1 + window_size = i - left + 1 + size = window_size - max(freq) + + while size > k: + freq[idx(s[left])] -= 1 + + left += 1 + window_size -= 1 + size = window_size - max(freq) + + max_len = max(max_len, window_size) + + return max_len + diff --git a/palindromic-substrings/parkhojeong.py b/palindromic-substrings/parkhojeong.py new file mode 100644 index 0000000000..6d90dc68d2 --- /dev/null +++ b/palindromic-substrings/parkhojeong.py @@ -0,0 +1,15 @@ +class Solution: + def countSubstrings(self, s: str) -> int: + s_len = len(s) + success = set([(i, i + 1) for i in range(s_len)]) + + for r in range(s_len): + for l in range(0, r): + if r - l == 1 and s[l] == s[r]: + success.add((l, r + 1)) + continue + + if (l + 1, r) in success and s[l] == s[r]: + success.add((l, r + 1)) + + return len(success) diff --git a/reverse-bits/parkhojeong.py b/reverse-bits/parkhojeong.py new file mode 100644 index 0000000000..a190aaee93 --- /dev/null +++ b/reverse-bits/parkhojeong.py @@ -0,0 +1,9 @@ +class Solution: + def reverseBits(self, n: int) -> int: + m = 0 + for i in range(32): + remainder = n % 2 + n = n // 2 + m += pow(2, 31 - i) * remainder + + return m