シーン:
リートコードの質問7:
7.整数反転
32ビットの符号付き整数xを提供し、xのデジタル部分を反転した結果を返します。
反転後、整数が32ビットの符号付き整数の範囲[-231、231 -1]を超えると、0が返されます。
環境が64ビット整数(符号付きまたは符号なし)の格納を許可していないと想定します。
出典:LeetCode
リンク:https ://leetcode-cn.com/problems/reverse-integer
著作権はLeetCodeが所有しています。商用転載の場合は、公認機関にご連絡ください。非商用転載の場合は、出典を明記してください。
問題の説明:
最初の答え:
class Solution {
public int reverse(int x) {
long y=0;
while (x!=0){
y=y*10+x%10;
x=x/10;
}
return (int)y==y?y:0;
}
}
エラーが報告されました:次のように
翻訳されます:
互換性のないタイプ:longからint
への不可逆変換の可能性return(int)y == y?y:0;
原因分析:
long型yはint型として返すことはできず、強制的にint型にする必要があります。つまり、returnは次のように変更する必要があります
。return(int)y == y?(int)y:0;
class Solution {
public int reverse(int x) {
long y=0;
while (x!=0){
y=y*10+x%10;
x=x/10;
}
return (int)y==y?(int)y:0;
}
}
正常に解決されました
もちろん、この問題はtry / catchでも実行できますが、この方法の方が柔軟性があります。