LeetCode:9回文数C++
説明
はい、このように突然leetcode-cnに切り替えて、全中国語のインタフェースになって1つの整数が回文数であるかどうかを判断しました.補助スペースは使用できません.
いくつかのヒント:負の整数は文の数に戻ることができますか?(例-1)整数を文字列に変換しようとする場合は、補助空間の使用が禁止されていることに注意してください.数値を逆さまにすることも考えられます.しかし、「整数を逆さまにする」という問題を解決したら、整数を逆さまにするとオーバーフローする可能性があることに気づきます.どうやってこの問題を解決しますか?本題には比較的一般的な解決方法があります.
ぶんせき
ヒントが多すぎます.まず負数は回文数ではないに違いありません.0-9は回文数が文字列に変わるに違いありません.余分な空間連想の前の逆さまの整数を占めていますが、実際には考え方が一致しています.同じように反転しています.限界問題に直面しているにすぎない.私の当時の方法(コード1)はlong longを使っていましたが、どうせintの桁数がそこにあるので、いくらひっくり返ってもlong longを超えることはありません.ネット上では機知に富んでいて、半分しか反転していませんが、10の倍数を単独で考える場合、偶然だと思います.一緒にこの方法を添付します.https://blog.csdn.net/lisonglisonglisong/article/details/45701629(なぜか後者の運行時間が少し遅い)
コード1
//全反転比較
コード2
1つのtip処理文数反転数はいずれも型取りと10乗算によるものである
はい、このように突然leetcode-cnに切り替えて、全中国語のインタフェースになって1つの整数が回文数であるかどうかを判断しました.補助スペースは使用できません.
いくつかのヒント:負の整数は文の数に戻ることができますか?(例-1)整数を文字列に変換しようとする場合は、補助空間の使用が禁止されていることに注意してください.数値を逆さまにすることも考えられます.しかし、「整数を逆さまにする」という問題を解決したら、整数を逆さまにするとオーバーフローする可能性があることに気づきます.どうやってこの問題を解決しますか?本題には比較的一般的な解決方法があります.
ぶんせき
ヒントが多すぎます.まず負数は回文数ではないに違いありません.0-9は回文数が文字列に変わるに違いありません.余分な空間連想の前の逆さまの整数を占めていますが、実際には考え方が一致しています.同じように反転しています.限界問題に直面しているにすぎない.私の当時の方法(コード1)はlong longを使っていましたが、どうせintの桁数がそこにあるので、いくらひっくり返ってもlong longを超えることはありません.ネット上では機知に富んでいて、半分しか反転していませんが、10の倍数を単独で考える場合、偶然だと思います.一緒にこの方法を添付します.https://blog.csdn.net/lisonglisonglisong/article/details/45701629(なぜか後者の運行時間が少し遅い)
コード1
//全反転比較
bool isPalindrome(int x) {
if (x < 0)return false;
if (x >= 0 && x < 10)return true;
long long temp=0;
int xx = x;
while (x!=0)
{
int n = x % 10;
temp = temp * 10 + n;
x /= 10;
}
if (temp == xx)return true;
else return false;
}
コード2
if (x < 0 || x>0&&x%10==0)return false;
if (x >= 0 && x < 10)return true;
int temp=0;
while (x>temp)
{
int n = x % 10;
temp = temp * 10 + n;
x /= 10;
}
if ((x == temp / 10) || (x == temp))return true;
else return false;
}
1つのtip処理文数反転数はいずれも型取りと10乗算によるものである