【LeetCode】 7. 整数反转

在这里插入图片描述

解题思路

先取余数,再取商


Java代码

class Solution {
    public int reverse(int x) {
        long temp = 0;//中间变量,32位即4个字节,考虑溢出,我们用long;
        while(x != 0){
            long rev = temp*10;
            temp = rev + x%10;//反转就是将最低位变为最高位,最高位变为最低位
            x/=10;//目的是从最高位逐渐往下变
        }
        if(temp<Integer.MIN_VALUE || temp>Integer.MAX_VALUE){//判断temp是否有溢出现象
             return 0;
        }
        return (int)temp;//最后满足条件的转换成我们int类型
    }
}


Python代码

class Solution(object):
  def reverse(self, x):
    """
    :type x: int
    :rtype: int
    """
    # and:与运算的两边,有假则假;若都为真,则选后者;若都为假,则选前者;
    sign = x < 0 and -1 or 1
    x = abs(x)
    ans = 0
    while x:
      ans = ans * 10 + x % 10  # 求余
      x //= 10  # 求商
    return sign * ans if ans <= 0x7fffffff else 0

s = Solution()
res = s.reverse(123)
print(res)

附录

一.或运算

1.0 or 1

结果为:1

2.1 or 0

结果为:1

3.1 or 2

结果为:1

4.2 or 1

结果为:2

5.0 or []

结果为:[]

6.[] or 0

结果为:0

二.与运算

1.0 and 1

结果为:0

2.1 and 0

结果为:0

3.1 and 2

结果为:2

4.2 and 1

结果为:1

5.’ ’ and 0

结果为:’ ’

6.0 and ’ ’

结果为:0

三.混合运算

1.1 < ( 2 == 2)

结果为:False 这道题就不用多说了,2==2为True,True换成数字为1,1<1明显为Flase

2.1 < 2 == 2

结果为:True

按照正常思路,比较运算优先级比等于优先级高,所以这道题先算1 < 2 为True,True为1,1不等于2,所以为Flase

但是,答案明明就是True,实际上这道题是这样算的:

1 < 2 and 2 == 2 这样一转变,是不是立马就明白了

因为逻辑运算优先级低,所以最后运算为:True and True

总结:

1.or:或运算的两边,有真则真;若都为真,则选前者;若都为假,则选后者;

2.and:与运算的两边,有假则假;若都为真,则选后者;若都为假,则选前者;

3.混合运算时,应当考虑运算符优先级的问题,当有括号时,先算括号内的运算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值