回文數(shù)
第一次(自己)解法思路 :
把數(shù)字轉(zhuǎn)化為字符串,在轉(zhuǎn)化為char類型的數(shù)組,然后用兩個指針前后比較
時間復雜度 和 空間復雜度 都為 O(n)?
時間復雜度分析 :?O(log n + n) ?≈?O(n)。
符串轉(zhuǎn)換:將整數(shù)轉(zhuǎn)換為字符串需要花費 O(log n) 的時間,其中 n 是輸入整數(shù)的位數(shù)。
對稱比較:在對稱比較過程中,?O(n/2) ≈?O(n) 的時間,其中 n 是字符串的長度。
空間復雜度分析:O(log n + n) ?≈?O(n)
字符串轉(zhuǎn)換:將整數(shù)轉(zhuǎn)換為字符串需要使用額外的存儲空間,其空間復雜度為 O(log n)
字符數(shù)組:將字符串轉(zhuǎn)換為字符數(shù)組需要額外的存儲空間,其空間復雜度為 O(n)

第二次解法(數(shù)學法):
把后面一半的數(shù)字反轉(zhuǎn)之后與截取之后的數(shù)字進行比較
時間復雜度 :O(lngN) 截取一半??
空間復雜度 :? O(1) 沒有開辟新的空間??
代碼分析:(優(yōu)秀的代碼需要嚴謹)
????????????首先排除 小于0的數(shù) 和 二位整數(shù)(讓0通過)
????????????然后定義一個變量 reversedNumber 去 保存每次截取反轉(zhuǎn) 后 的 數(shù)字
????????????這里是< 而不是<=? 如果 為<= ,那么當輸入0 的時候會導致死循環(huán)
????????? ? 最后寫出 奇數(shù) 偶數(shù) 兩種情況的判斷?
????????????為什么奇數(shù)需要/10? 因為截取之后 奇數(shù)比截取之后的數(shù)多一位,使用需要/10

有關(guān)上一章節(jié)中的“異或”運算符 的“額外” 小運用:
?????????交換兩個變量的值
?但是不推薦這樣去使用,雖然性能比創(chuàng)建臨時變量的性能高,但是可讀性差,并且不符合代碼規(guī)范
? ? ? ? ?判斷奇偶
如果一個數(shù)為偶數(shù) 那么二進制最后一位肯定為 0 ,反之為1;
那么就可以用 & 或者 |?去判斷 奇偶