leetcode Palindrome Number

OpenSoucre發表於2014-03-27

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;
}

 

相關文章