整数がパリンドロームであるかどうかを判別します。パリンドローム番号は、正の順序(左から右)と逆の順序(右から左)の両方で同じ整数を参照します。
例1:
入力:121
出力:true
例2:
入力:-121
出力:false
説明:左から右に読み取ると、-121になります。右から左に読むと121-です。したがって、それはパリンドロームではありません。
例3:
入力:10
出力:false
説明:右から左に読み取ると、01です。したがって、それはパリンドロームではありません。
高度:
整数を文字列に変換せずにこの問題を解決できますか?
1)解決策:32個の要素の配列を借用して各番号を格納し、それを半分にして、左右の要素を比較します。
コアコードは次のとおりです
。//myHuiWei.cpp
#define MaxSize 32
bool IsHuiWen(int x) {
if (x < 0)
return false;
else if (x >= 0 && x <= 9) {
return true;
}
else {
int arry[MaxSize];
int nLen = 0;
while (x != 0) {
arry[nLen++] = x % 10;
x /= 10;
}
for (int j = 0; j < nLen/2; j++) {
if (arry[j] != arry[nLen - j -1])
return false;
}
return true;
}
}
class Solution {
public:
bool isPalindrome(int x) {
return IsHuiWen(x);
}
};
3.備考の
出典:LeetCode質問番号:009
リンク:LeetCodepalindrome番号No009