<pre name="code" class="cpp">int reverse(int x) {
if(x==0)
return 0;
string s="";
bool b=true;
if(x==-2147483648)
return 0;
if(x<0){
x=~x;
x+=1;
b=false;
}
while(x){
s+=char(x%10+'0');
x=x/10;
}
if(s.length()>=10&&s.compare("2147483647")>=0)
return 0;
int result=int(s[0]-'0');
for(int i=1;i<s.length();i++){
result=result*10+int(s[i]-'0');
}
if(b==false){
result=~result;
result+=1;
}
return result;
}
这道倒置数字的题目修改了测试数据,主要是添加了溢出的判断。和之前简单的倒置相比复杂了不少。
</pre><p></p><pre name="code" class="cpp">int reverse(int x) {
int flag=x>0?1:-1;
int result=0;
while(x){
result=result*10+x%10;
x/=10;
}
return result;
}
16位整数中-32768到32767
32位整数中-2147483648到2147 483 647
最高位为符号位 ,请您计算2的15次方以及2的31次方,就可以得到以上结果
16位整数-2^15~2^15-1
32位整数-2^31~2^31-1