diff --git a/clone-graph/8804who.py b/clone-graph/8804who.py new file mode 100644 index 0000000000..5274b35e5c --- /dev/null +++ b/clone-graph/8804who.py @@ -0,0 +1,33 @@ +""" +# 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']: + if not node: + return + visited = {} + new_node = Node() + def dfs(original_node, new_node): + if original_node.val in visited: + return + visited[original_node.val] = new_node + new_node.val = original_node.val + new_node.neighbors = [] + + for neighbor in original_node.neighbors: + new_node.neighbors.append(Node()) + if neighbor.val not in visited: + dfs(neighbor, new_node.neighbors[-1]) + new_node.neighbors[-1] = visited[neighbor.val] + dfs(node, new_node) + return new_node + + + diff --git a/longest-common-subsequence/8804who.py b/longest-common-subsequence/8804who.py new file mode 100644 index 0000000000..30a6b1aaa5 --- /dev/null +++ b/longest-common-subsequence/8804who.py @@ -0,0 +1,13 @@ +class Solution: + def longestCommonSubsequence(self, text1: str, text2: str) -> int: + dp = [[0 for _ in range(len(text2)+1)] for _ in range(len(text1)+1)] + + for i in range(1, len(text1)+1): + for j in range(1, len(text2)+1): + if text1[i-1] == text2[j-1]: + dp[i][j] = dp[i-1][j-1]+1 + else: + dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + + return dp[-1][-1] + diff --git a/longest-repeating-character-replacement/8804who.py b/longest-repeating-character-replacement/8804who.py new file mode 100644 index 0000000000..83813b97c1 --- /dev/null +++ b/longest-repeating-character-replacement/8804who.py @@ -0,0 +1,26 @@ +class Solution: + def characterReplacement(self, s: str, k: int) -> int: + n = 65 + answer = 1 + for i in range(26): + t = chr(n+i) + start = 0 + end = 0 + x = 1 if s[start] != t else 0 + + while True: + if x > k: + if s[start] != t: + x -= 1 + start += 1 + else: + end += 1 + if end == len(s): + break + if s[end] != t: + x += 1 + if x <= k: + answer = max(answer, end-start+1) + return answer + + diff --git a/palindromic-substrings/8804who.py b/palindromic-substrings/8804who.py new file mode 100644 index 0000000000..c0e715e2f9 --- /dev/null +++ b/palindromic-substrings/8804who.py @@ -0,0 +1,23 @@ +class Solution: + def countSubstrings(self, s: str) -> int: + answer = 0 + for i in range(len(s)): + for j in range(len(s)): + if i - j < 0 or i + j >= len(s): + break + if s[i-j] == s[i+j]: + answer += 1 + else: + break + + if i+1 >= len(s) or s[i] != s[i+1]: + continue + for j in range(len(s)): + if i - j < 0 or i + 1 + j >= len(s): + break + if s[i-j] == s[i+1+j]: + answer += 1 + else: + break + return answer + diff --git a/reverse-bits/8804who.py b/reverse-bits/8804who.py new file mode 100644 index 0000000000..9b4a43b17b --- /dev/null +++ b/reverse-bits/8804who.py @@ -0,0 +1,4 @@ +class Solution: + def reverseBits(self, n: int) -> int: + return int(format(n, "032b")[::-1], 2) +