Skip to content

Commit fc87b20

Browse files
authored
Merge pull request #1902 from delight010/main
[SeongA] WEEK08 Solution
2 parents a471acf + 189f641 commit fc87b20

File tree

5 files changed

+108
-1
lines changed

5 files changed

+108
-1
lines changed

clone-graph/delight010.swift

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Solution {
2+
// Time O(V+E)
3+
// Space O(V)
4+
func cloneGraph(_ node: Node?) -> Node? {
5+
guard let node = node else { return nil }
6+
7+
var visited: [Int: Node] = [:]
8+
var queue: [Node] = []
9+
10+
let firstNode = Node(node.val)
11+
visited[node.val] = firstNode
12+
13+
queue.append(node)
14+
15+
while !queue.isEmpty {
16+
let currentNode = queue.removeFirst()
17+
18+
for neighbor in currentNode.neighbors {
19+
guard let neighbor = neighbor else { continue }
20+
21+
if let clonedNeighbor = visited[neighbor.val] {
22+
visited[currentNode.val]!.neighbors.append(clonedNeighbor)
23+
} else {
24+
visited[neighbor.val] = Node(neighbor.val)
25+
visited[currentNode.val]!.neighbors.append(visited[neighbor.val])
26+
queue.append(neighbor)
27+
}
28+
}
29+
}
30+
31+
return firstNode
32+
}
33+
}
34+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
// Time (MN)
3+
// Space (MN)
4+
func longestCommonSubsequence(_ text1: String, _ text2: String) -> Int {
5+
var dp = Array(repeating: Array(repeating: 0, count: text2.count + 1),
6+
count: text1.count + 1)
7+
for (i, char1) in text1.enumerated() {
8+
for (j, char2) in text2.enumerated() {
9+
if char1 == char2 {
10+
dp[i + 1][j + 1] = dp[i][j] + 1
11+
} else {
12+
dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1])
13+
}
14+
}
15+
}
16+
17+
return dp[text1.count][text2.count]
18+
}
19+
}
20+

longest-substring-without-repeating-characters/delight010.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
class Solution {
22
// Time complexity O(N)
3-
// Space complexity O(min(m,n))
3+
// Space complexity O(N)
44
func lengthOfLongestSubstring(_ s: String) -> Int {
55
if s.isEmpty {
66
return 0
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution {
2+
// Time O(n^2)
3+
// Space O(n)
4+
func countSubstrings(_ s: String) -> Int {
5+
let charArray = Array(s)
6+
var count = 0
7+
8+
for i in 0..<charArray.count {
9+
count += countPalindrome(charArray, i, i)
10+
count += countPalindrome(charArray, i, i + 1)
11+
}
12+
13+
return count
14+
}
15+
16+
private func countPalindrome(_ s: [Character], _ left: Int, _ right: Int) -> Int {
17+
var left = left
18+
var right = right
19+
var count = 0
20+
21+
while left >= 0 && right < s.count {
22+
if s[left] == s[right] {
23+
count += 1
24+
} else {
25+
break
26+
}
27+
28+
left -= 1
29+
right += 1
30+
}
31+
32+
return count
33+
}
34+
}
35+

reverse-bits/delight010.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
// Time O(1)
3+
// Space O(1)
4+
func reverseBits(_ n: Int) -> Int {
5+
var number = n
6+
var result = 0
7+
8+
for i in 0..<32 {
9+
let bit = number & 1
10+
result = result << 1
11+
result = result | bit
12+
number = number >> 1
13+
}
14+
15+
return result
16+
}
17+
}
18+

0 commit comments

Comments
 (0)