Skip to content

Commit 2253201

Browse files
authored
Merge pull request #2244 from 8804who/main
[8804who] WEEK 08 Solutions
2 parents 63f9c79 + 17d352c commit 2253201

5 files changed

Lines changed: 99 additions & 0 deletions

File tree

clone-graph/8804who.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""
2+
# Definition for a Node.
3+
class Node:
4+
def __init__(self, val = 0, neighbors = None):
5+
self.val = val
6+
self.neighbors = neighbors if neighbors is not None else []
7+
"""
8+
9+
from typing import Optional
10+
11+
class Solution:
12+
def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:
13+
if not node:
14+
return
15+
visited = {}
16+
new_node = Node()
17+
def dfs(original_node, new_node):
18+
if original_node.val in visited:
19+
return
20+
visited[original_node.val] = new_node
21+
new_node.val = original_node.val
22+
new_node.neighbors = []
23+
24+
for neighbor in original_node.neighbors:
25+
new_node.neighbors.append(Node())
26+
if neighbor.val not in visited:
27+
dfs(neighbor, new_node.neighbors[-1])
28+
new_node.neighbors[-1] = visited[neighbor.val]
29+
dfs(node, new_node)
30+
return new_node
31+
32+
33+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def longestCommonSubsequence(self, text1: str, text2: str) -> int:
3+
dp = [[0 for _ in range(len(text2)+1)] for _ in range(len(text1)+1)]
4+
5+
for i in range(1, len(text1)+1):
6+
for j in range(1, len(text2)+1):
7+
if text1[i-1] == text2[j-1]:
8+
dp[i][j] = dp[i-1][j-1]+1
9+
else:
10+
dp[i][j] = max(dp[i-1][j], dp[i][j-1])
11+
12+
return dp[-1][-1]
13+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution:
2+
def characterReplacement(self, s: str, k: int) -> int:
3+
n = 65
4+
answer = 1
5+
for i in range(26):
6+
t = chr(n+i)
7+
start = 0
8+
end = 0
9+
x = 1 if s[start] != t else 0
10+
11+
while True:
12+
if x > k:
13+
if s[start] != t:
14+
x -= 1
15+
start += 1
16+
else:
17+
end += 1
18+
if end == len(s):
19+
break
20+
if s[end] != t:
21+
x += 1
22+
if x <= k:
23+
answer = max(answer, end-start+1)
24+
return answer
25+
26+

palindromic-substrings/8804who.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution:
2+
def countSubstrings(self, s: str) -> int:
3+
answer = 0
4+
for i in range(len(s)):
5+
for j in range(len(s)):
6+
if i - j < 0 or i + j >= len(s):
7+
break
8+
if s[i-j] == s[i+j]:
9+
answer += 1
10+
else:
11+
break
12+
13+
if i+1 >= len(s) or s[i] != s[i+1]:
14+
continue
15+
for j in range(len(s)):
16+
if i - j < 0 or i + 1 + j >= len(s):
17+
break
18+
if s[i-j] == s[i+1+j]:
19+
answer += 1
20+
else:
21+
break
22+
return answer
23+

reverse-bits/8804who.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Solution:
2+
def reverseBits(self, n: int) -> int:
3+
return int(format(n, "032b")[::-1], 2)
4+

0 commit comments

Comments
 (0)