蓝桥杯训练第二天

一力扣7整数反转

1思路

可以反转的时候把他转化成字符串,记录正负号并变成整数,再反转,从第一个非0字符串开始切片,最后加上正负号用int强制转化
复杂度On

二代码

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """

        s=str(x)
        k=1
        if s[0]=='-':
            k=-1
            s=s[1:]
            #实现对正负号的记录
        l=len(s)
        s=s[::-1]
        #反转字符串
        for i in range(l):
            if s[i]!='0':
                s=s[i:]
                break
                #遇到第一个非零字符就跳出循环
        res=k*int(s)
        if res<-(2**31) or res>2**31-1:
            return 0
            #排除异样
        else:
            return res


3结果

在这里插入图片描述

二力扣8

1思路

标识符控制
  • 我们用neg代表正负号来最后乘以结果
  • 我们用ch控制多个正负号连续出现或多次出现无效的情况
  • 我们用ans表示录入的纯数字,他的是否空集可以作为是否允许录入的标志

条件分类

  • 再无录入且标识符唯一或没有的情况下跳过空格
  • 在初始值为0开头情况下,ans为空时调整标识符并继续
  • 录入正负号时改变neg标志量
  • 第二次次标志出现就结束循环
  • 范围判断数字和判断溢出

2代码

class Solution:
    def myAtoi(self, s: str) -> int:
        ans=0
        neg=1
        ch=1
        for i in range(len(s)):
            if s[i]==' ' and ch and ans==0:#再无录入且标识符唯一或没有的情况下跳过空格
                continue
            if s[i]=='0' and ans==0:#在初始值为0开头情况下,ans为空时调整标识符并继续
                ch=0
                continue
            if s[i]=='-' and ans==0 and ch:#录入正负号时改变neg标志量
                neg=-1
                ch=0
                continue
            if s[i]=='-' and (ans!=0 or not ch):#第二次次标志出现就结束循环
                break
            if s[i]=='+' and ans==0 and ch:
                ch=0
                continue
            if s[i]=='+' and (ans!=0 or not ch):
                break
            if s[i]<='9' and s[i]>='0':#范围判断数字
                ans=ans*10+int(s[i])
            else:
                break
        ans=ans*neg
        if ans>2**31-1:
            return 2**31-1
        if ans<-2**31:#检验溢出
            return -2**31
        return ans

3结果

在这里插入图片描述

三题库9

1思路

  • 这个题对python来说没有什么大的意义,明明最简单的倒着排最有效,第一种两行转化字符串和倒排
  • 第二种方法就是首位取余与最后一个对应,排除异样情况,如果i取完有不等就false

2代码

class Solution:
    def isPalindrome(self, x: int) -> bool:
        s=str(x)
        return s==s[::-1]

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0 :
            return False
        i, res = x, 0
        while i != 0:
            res = res * 10 + i % 10
            i //= 10
        return res == x

在这里插入图片描述
在这里插入图片描述
总结:
今天可以说没看题解之前写的,有些生涩,但是觉得今天字符串啊数字啊一直倒转一直反转,无非就【::-1】或者加点条件判断,比昨天的容易不少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值