先排除幾個特殊情況:0是回文數;負數都不是回文數;凡是能被10整除的(10,100,1000)都不是回文數。
然後,因為int表示範圍有限,既然是回文數(左右兩邊是反過來的),那麼,這樣比較一半就好了。用int型的陣列num將輸入的數x轉換為陣列,然後,從中間斷開,比較左右兩邊是否相等,即可。
bool
ispalindrome
(int x)
int n1=
0,n2=0;
int len=num.
size()
/2;for
(int i=
0;i) n1=n1*
10+num[i];if
(num.
size()
%2==1
) len++
;//要num.size()是奇數跳過最中間的
for(
int i=num.
size()
-1;i>=len;i--
) n2=n2*
10+num[i];if
(n1==n2)
return
true
;else
return
false;}
}
題解這裡while迴圈用x>revertednumber,好機智,while迴圈後,剩餘的x就是左邊的,revertednumber就是右邊的
虧得自己還用陣列存起來。。。
int revertednumber =0;
while
(x > revertednumber)
return x == revertednumber || x == revertednumber /
10;
力扣9 回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。這是我自己寫的版本。但是和官方題解相比還是差了點。public boolean ispalindrome int x return y x public bool ispalindrome int x int r...
解題力扣9 回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數 示例一輸入 121 輸出 true 示例二輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例三輸入 10 輸出 false 解釋 從右向左讀,為 01...
力扣LeetCode 9 回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左...