Determine whether an integer is a palindrome. Do this without extra space.
題意是判斷整數是不是迴文串,
第一個想法是將整數轉換為字串,但題目要求不能用額外的空間
第二個想法是將數字反過來,比較兩個數字是不是相等,但將兩個數字反過來可能造成數字溢位,
故直接用最原始的寫法,從兩端比較數字是不是相等
注意負數的情況,儘量少用pow,其時間開銷比較大
#include <iostream> using namespace std; bool isPalindrome(int x){ if( x < 0) return false; int maxDiv = 1; while (x/maxDiv >= 10) maxDiv *=10; while (x) { if (x/maxDiv == x%10) { x =(x%maxDiv)/10; maxDiv/=100; }else{ return false; } } return true; } int main(){ cout<<isPalindrome(12221)<<endl; }