扫码阅读
手机扫码阅读

听:测试开发面试题解(1)-整数反转

65 2024-10-18

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:听:测试开发面试题解(1)-整数反转
文章来源:
光荣之路
扫码关注公众号
文章摘要:整数反转面试题解析

整数反转面试题解析

本文由何发奋撰写,旨在解答一个简单难度的测试开发面试题——整数反转。该题要求将一个32位有符号整数的每位数字进行反转,考虑到整数溢出的情况。

题目描述

题目要求反转一个32位的有符号整数。例如,输入123应输出321;输入-123应输出-321;输入120应输出21。需要注意的是,如果反转后的整数超出了[−2 31, 2 31−1]的范围,就应当返回0。

算法解析

解决方案涉及将整数转为字符串进行反转,然后再转回整数,但需要分别处理正数和负数两种情况。对于正数,直接转换为字符串并反转;对于负数,则先取绝对值再进行相同的操作。

输出结果也需要分类讨论:如果反转后的整数超出32位有符号整数的表示范围,即不在[−2 31, 2 31−1]之间,应返回0;否则返回反转后的整数。

考点归纳

本题测试了求绝对值的abs函数,整数和字符串类型之间的转换,以及字符串的倒序输出。

代码实现


def reverse(x):
    """
    :type x: int
    :rtype: int
    """
    if x >= 0:
        result = int(str(x)[::-1])  # 将x转换为str类型,翻转,再转换回int
    else:
        result = -int(str(abs(x))[::-1])  # x为负数,反转其绝对值
    if result > 2**31 - 1 or result < -2**31:
        return 0  # 如果结果溢出,返回0
    return result

想要了解更多内容?

查看原文:听:测试开发面试题解(1)-整数反转
文章来源:
光荣之路
扫码关注公众号