(Python)LeetCode 习题代码(部分)

1、关于特殊数字字符串等

1.1 Palindrome Number(#9)

题目翻译: 给定一个数字,要求判断这个数字是否为回文数字. 比如121就是回文数字,122就不是回文数字.

解题思路: 这道题很明显是一道数学题,计算一个数字是否是回文数字,我们其实就是将这个数字除以10,保留他的余数,下次将余数乘以10,加上这个数字再除以10的余数.

需要注意的点:

负数不是回文数字.
0是回文数字.
时间复杂度: logN

代码如下:

    def isPalindrome( x):
        if x<0 or (x!=0 and x%10==0):
            return False
        y =0
        m=x
        while x!=0:
            y = y * 10 + x % 10
            x = x//10
        return (y==m )

2、正则匹配

2.1 String to Integer (atoi)(#8)

题目要求:
1. 字串为空或者全是空格,返回0;
2. 字串的前缀空格需要忽略掉;
3. 忽略掉前缀空格后,遇到的第一个字符,如果是‘+’或‘-’号,继续往后读;如果是数字,则开始处理数字;如果不是前面的2种,返回0;
4. 处理数字的过程中,如果之后的字符非数字,就停止转换,返回当前值;
5. 在上述处理过程中,如果转换出的值超出了int型的范围,就返回int的最大值或最小值

代码如下:

   import re
    def myAtoi(self,str):
        s =str.strip()
        i = re.findall('(^[\+\-0]*\d+)\D*',s)
        try:
            result =''.join(i)
            Max_index = 2**31-1
            Min_index = -2**31
            if int(result)>Max_index:
                return Max_index
            elif int(result)<Min_index:
                return Min_index
            return int(result)

        except:
            return 0

3 集合List

3.1 Reverse Integer(#7)

题目要求:
Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

代码如下:

def reverse(self, x):
        str='%d'%x
        a=[]
        if str[0]=='-':
            a.append("-")
            for m in list(range(-1, -len(str), -1)):
                a.append(str[m])
            result= int(''.join(a))
        else:
            for m in list(range(-1,-(len(str)+1),-1)):
                a.append(str[m])
            result = int(''.join(a))

        if result >2**31-1 or result <-2**31:
            return 0
        else:
            return result

3.2 ZigZag Conversion(#6)

题目如下:

The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P A H N
A P L S I I G
Y I R
And then read line by line: “PAHNAPLSIIGYIR”

思路:
用下角标的方法判断太麻烦,而且会出现各种情况,尤其是最后一次循环以及第一行和最后一行特殊处理的情况,因此不合适。
采用List集合方

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值