diff --git a/number-of-1-bits/sonjh1217.swift b/number-of-1-bits/sonjh1217.swift new file mode 100644 index 000000000..d3a50a6d5 --- /dev/null +++ b/number-of-1-bits/sonjh1217.swift @@ -0,0 +1,54 @@ +class Solution { + func hammingWeightDivide(_ n: Int) -> Int { + var count = 0 + var dividedNumber = n + while dividedNumber > 0 { + let remainder = dividedNumber % 2 + if remainder == 1 { + count += 1 + } + dividedNumber /= 2 + } + + return count + + //시간 복잡도(O(log n)) + //공간 복잡도(O(1)) + } + + func hammingWeightShift(_ n: Int) -> Int { + var count = 0 + + var shiftedNumber = n + while shiftedNumber > 0 { + if (shiftedNumber & 1) == 1 { + count += 1 + } + shiftedNumber >>= 1 + } + + return count + + //시간 복잡도(O(log n)) + //공간 복잡도(O(1)) + } + + func hammingWeightMask(_ n: Int) -> Int { + var count = 0 + + var mask = 1 << 31 + + while mask > 0 { + if mask & n == mask { + count += 1 + } + mask >>= 1 + } + + return count + + //시간 복잡도(O(1)) + //공간 복잡도(O(1)) + } +} + diff --git a/valid-palindrome/sonjh1217.swift b/valid-palindrome/sonjh1217.swift new file mode 100644 index 000000000..38d991e02 --- /dev/null +++ b/valid-palindrome/sonjh1217.swift @@ -0,0 +1,12 @@ +class Solution { + func isPalindrome(_ s: String) -> Bool { + let filtered = s.filter {$0.isLetter || $0.isWholeNumber}.lowercased() + let reversed = String(filtered.reversed()) + + return filtered == reversed + + //시간 복잡도 O(n) + //공간 복잡도 O(n) + } +} +