【leetcode】9. Palindrome Number (easy)
問題描述:

問題示例:


個人思路:
? ?從給出的三個例子可以看出: 121 是回文字,因?yàn)閺淖筮呴_始讀是121從右邊開始讀是121.
但是-121不是回文字不是因?yàn)閺淖筮呴_始讀是-121從右邊開始是121-,不是回文字。最后一個例子,10從左邊開始讀是10從右邊是01是不相同的。
我們得到以下結(jié)論
? ? ? ? ? ? ? ? ? ? ? ? ? ?1. 給的數(shù)字要對稱
? ? ? ? ? ? ? ? ? ? ? ? ? ?2.必須要正數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ?3.最后一個數(shù)不能是0
我想到的解題?? ? ? ? 第一步:判斷該數(shù)非0,把整數(shù)每一位取出來
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第二步:從后往前,首先判斷它的最后一位是否為0.不是0之后
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第三步:判斷是否對稱

Leetcode官方題解:
? ? ? ? ? ? ? ? ? ? ? 第1步:處理臨界情況即(第一步+第二步)
? ? ? ? ? ? ? ? ? ? ? 第2步:采用反轉(zhuǎn)的方式:比如1221將其反轉(zhuǎn)12(后部分21反轉(zhuǎn)得到,其實(shí)就是我說的對稱)
? ? ? ? ? ? ? ? ? ? ?

這其中的難點(diǎn)是: ?反轉(zhuǎn)數(shù)字。反轉(zhuǎn)數(shù)字中:會遇到以下問題
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.感覺沒法表示 反轉(zhuǎn)的后兩位數(shù)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.遇到奇數(shù)長度的數(shù)字很苦手
第一次寫的時候就感覺沒法反轉(zhuǎn):
??官方采用這個方法來反轉(zhuǎn):
? ? ? ? ? ? ? ? ?我當(dāng)時就把個位數(shù)求出來然后十位數(shù)求出來*10然后發(fā)現(xiàn)沒辦法更新,個位上的數(shù)要更新為十位上的數(shù)。??引入revertnumber這個中間變量,revertnumber = 0。revertnumber=x%10.此時為第一次,第二次要把revertnumber表示的數(shù)乘10升級為十位,然后把x更新去掉原來的個位即 x /10.最后(x/10)%10.但是此時巧合的是,revertnumber初始化為0,所以可以第一次%10的結(jié)果和revertnumber是一致的。利用revertnumber=(x%10)+revertnumber*10.
? ? ??
解決奇數(shù)問題:
? ?就是奇數(shù)中間數(shù)是關(guān)于自己對稱的,所以把revertnumber/10把中間數(shù)去掉。然后將前半部分和后半部分判斷相同。