1. 程式人生 > >迴文數(leetcode簡單篇第九題)

迴文數(leetcode簡單篇第九題)

迴文數:迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數

舉例:121 , 12321 ,1221,12233221都為迴文數(對稱的),120不為迴文數,負數不為迴文數
判斷的方法:1.我們可以旋轉一半原數字,比如1221旋轉一半之後為12 ,旋轉了倆次,每旋轉一次我們都給,原數字除以10,所以原數字為12,倆個數相等,所以這個數字為迴文數
**2.**但是我們發現如果是12321時,我們旋轉後的數字和原數字為,123和12,這時其實我們給旋轉後的數字除以10就得到了結果,而且不會影響大小的比較。
程式碼如下


bool isPalindrome(int
x) { int rem = 0; if(x < 0 || (x % 10 == 0 && x != 0))//負數不是迴文數,最後一位為0的不是迴文數,0也是迴文數 return false; while(x > rem)//當x<rem時說明數字已經旋轉了一半 { rem = rem * 10 + (x%10);//這裡是旋轉原數字 x/=10; } return x == rem || x == rem/10; //數字位數是對稱的直接返回,不對稱的給旋轉數除以10 }```