判斷一個數是否迴文數的巧妙解法
阿新 • • 發佈:2019-02-16
·迴文數的定義:
對於非負數 其左右兩邊完全相同 則是迴文。 e.g: 121 11 等
對於負數 其絕對值左右兩邊完全相同 則是迴文。 e.g: -121 -11 等
設計一個演算法判斷給定的數是否為迴文數,如果是,輸出true 反之 輸出false;
貼程式碼:
#include <iostream> #include <math.h> using namespace std; bool isPadlindrome(int n) { // 如果是int型別的最小值 顯然不是迴文數 if (n == INT_MIN) { return false; } // 絕對值 n = abs(n); int tmp = 1; // 將tmp位數變為與n一致 while(n / tmp >= 10) // 防止tmp溢位 { tmp *= 10; } // n = 0 表示所有位比較完 while(n != 0) { // 最高位 != 最低位 if (n / tmp != n % 10) { return false; } // 最高位 = 最低位 去掉最高位 去掉最低位 // 繼續比較 n = (n % tmp) / 10; tmp /= 100; } return true; } int main(void) { int n; cin>>n; if (isPadlindrome(n)) { cout<<"true"<<endl; } else { cout<<"false"<<endl; } return 0; }