Skip to content

Commit 9b10b37

Browse files
authored
Merge pull request #1246 from vgyhn159115/id_406_key
406-Week 08
2 parents 48afed5 + 28cbb27 commit 9b10b37

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution:
2+
def isIsomorphic(self, s: str, t: str) -> bool:
3+
s2t = {}
4+
mapped_t = set()
5+
for i in range(len(s)):
6+
if s[i] in s2t:
7+
if s2t[s[i]] != t[i]:
8+
return False
9+
else:
10+
if t[i] in mapped_t:
11+
return False
12+
mapped_t.add(t[i])
13+
s2t[s[i]] = t[i]
14+
return True
15+
16+
17+
def reverse(s,k):
18+
a = list(s)
19+
for i in xrange(0, len(a), 2*k):
20+
a[i:i+k] = reversed(a[i:i+k])
21+
return "".join(a)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class Solution:
2+
def reverseStr(self, s: str, k: int) -> str:
3+
a = list(s)
4+
for i in range(0, len(a), 2*k):
5+
a[i:i+k] = reversed(a[i:i+k])
6+
return "".join(a)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution:
2+
def racecar(self, target: int) -> int:
3+
K = target.bit_length() + 1
4+
barrier = 1 << K
5+
pq = [(0, target)]
6+
dist = [float('inf')] * (2 * barrier + 1)
7+
dist[target] = 0
8+
9+
while pq:
10+
steps, targ = heapq.heappop(pq)
11+
if dist[targ] > steps: continue
12+
13+
for k in range(K+1):
14+
walk = (1 << k) - 1
15+
steps2, targ2 = steps + k + 1, walk - targ
16+
if walk == targ: steps2 -= 1
17+
18+
if abs(targ2) <= barrier and steps2 < dist[targ2]:
19+
heapq.heappush(pq, (steps2, targ2))
20+
dist[targ2] = steps2
21+
return dist[0]

0 commit comments

Comments
 (0)