若傳入的數字為回文,就回傳 true
只比較一半:
class Solution {
func isPalindrome(_ x: Int) -> Bool {
// Edge cases or special cases
if x == 0 { return true }
if x < 0 || x % 10 == 0 { return false }
var x = x
var reversed = 0
// Routines
// 組出反轉的數值
while x > reversed {
let digit = x % 10
x = x / 10
reversed = reversed * 10 + digit
}
// 比較兩者
return x == reversed || x == reversed / 10
}
}
令 n 為數字的位數
Big O | 說明 | |
---|---|---|
時間複雜度 | O(n) | 雖然只有走訪一半為 O(n/2),但是取最高項仍為 O(n) |
空間複雜度 | O(1) | 變數宣告為常數個 |
以上,就是今天的 LeetCode in Swift ,
如果有什麼問題和回饋歡迎留言一起討論,今天就到這裡,明天見!