• 5.21leetcode练习


    两数之和

    题目

    新手司机上路,光荣翻车,没想出来。借了别人的答案,自行领会

    答案

    整数反转

    题目

    思路及答案

    反转就是将数的顺序倒过来,那么就可以通过“除10取余”的方式,将末尾数一个个提出来,放到输出的字符串中,再将字符串转成整型返回结果。注意点如下:

    • 考虑正负数:正数可直接按思路操作,负数就需要先用绝对值按正数方式算,最后将运行结果取反数
    • 32位:需要考虑反转后的数字在范围[-2**32,2**32-1]内
    class Solution:
        def reverse(self, x: int) -> int:
            x_str = str(x)		# 将整型的x转变成字符
            output = ''			# 先定义返回结果为空字符串
            
            # 判断正负
            if x_str[0] == '-':
                x = abs(x)						# 将负数取绝对值
                for count in range(len(x_str)-1):
                    output += str(x % 10)		# 用“+”做字符串拼接
                    x //= 10					# 将数取整后循环
                output = -int(output)		# 结果转变回负数
            else:
                for count in range(len(x_str)):
                    output += str(x % 10)		
                    x //= 10
                    
            # 判断反转后的结果是否在[-2**32,2**32-1]内
            if -(2**31) <= int(output) <= (2**31-1):
                return(int(output))
            else:
                return(0)
    

    总结:代码中有重复代码,还有很大的精简空间

    回文数

    题目

    思路及答案

    回文数的特点:

    第一位(下标0)与最后一位(下标-1)相等,两下标相加为-1

    第二位(下标1)与倒数第二位(下标-2)相等,两下标相加为-1

    ........

    所以回文数两相等的下标之和相加为-1

    class Solution:
        def isPalindrome(self, x: int) -> bool:
            '''将整数转化成字符串来解决的方式'''
            x_str = str(x)
            for index in range(len(x_str)//2):
                if x_str[index] != x_str[-1-index]:
                    return(False)
            else:
                return(True)
    

    总结:进阶中要求不用字符串,这里用了字符串,还有待改进

    希望每天进步一点点

  • 相关阅读:
    软件开发沉思录读书笔记
    卓有成效的程序员读书笔记
    结对编程收获
    《提高c++性能的编程技术》读书笔记
    第六次读书笔记
    第五周读书笔记
    美团与它的超级大脑
    第四次读书笔记
    团队-团队编程项目爬取豆瓣电影top250-模块测试过程
    团队-爬取豆瓣电影TOP250-模块开发过程
  • 原文地址:https://www.cnblogs.com/863652104kai/p/10902392.html
Copyright © 2020-2023  润新知