蓝桥杯训练第二天

我会带着你远行 2023-01-05 12:39 309阅读 0赞

一力扣7整数反转

1思路

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

二代码

  1. class Solution(object):
  2. def reverse(self, x):
  3. """
  4. :type x: int
  5. :rtype: int
  6. """
  7. s=str(x)
  8. k=1
  9. if s[0]=='-':
  10. k=-1
  11. s=s[1:]
  12. #实现对正负号的记录
  13. l=len(s)
  14. s=s[::-1]
  15. #反转字符串
  16. for i in range(l):
  17. if s[i]!='0':
  18. s=s[i:]
  19. break
  20. #遇到第一个非零字符就跳出循环
  21. res=k*int(s)
  22. if res<-(2**31) or res>2**31-1:
  23. return 0
  24. #排除异样
  25. else:
  26. return res

3结果

在这里插入图片描述

二力扣8

1思路

标识符控制

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

条件分类

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

2代码

  1. class Solution:
  2. def myAtoi(self, s: str) -> int:
  3. ans=0
  4. neg=1
  5. ch=1
  6. for i in range(len(s)):
  7. if s[i]==' ' and ch and ans==0:#再无录入且标识符唯一或没有的情况下跳过空格
  8. continue
  9. if s[i]=='0' and ans==0:#在初始值为0开头情况下,ans为空时调整标识符并继续
  10. ch=0
  11. continue
  12. if s[i]=='-' and ans==0 and ch:#录入正负号时改变neg标志量
  13. neg=-1
  14. ch=0
  15. continue
  16. if s[i]=='-' and (ans!=0 or not ch):#第二次次标志出现就结束循环
  17. break
  18. if s[i]=='+' and ans==0 and ch:
  19. ch=0
  20. continue
  21. if s[i]=='+' and (ans!=0 or not ch):
  22. break
  23. if s[i]<='9' and s[i]>='0':#范围判断数字
  24. ans=ans*10+int(s[i])
  25. else:
  26. break
  27. ans=ans*neg
  28. if ans>2**31-1:
  29. return 2**31-1
  30. if ans<-2**31:#检验溢出
  31. return -2**31
  32. return ans

3结果

在这里插入图片描述

三题库9

1思路

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

2代码

  1. class Solution:
  2. def isPalindrome(self, x: int) -> bool:
  3. s=str(x)
  4. return s==s[::-1]
  5. class Solution:
  6. def isPalindrome(self, x: int) -> bool:
  7. if x < 0 :
  8. return False
  9. i, res = x, 0
  10. while i != 0:
  11. res = res * 10 + i % 10
  12. i //= 10
  13. return res == x

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

发表评论

表情:
评论列表 (有 0 条评论,309人围观)

还没有评论,来说两句吧...

相关阅读

    相关 -第7

    蓝桥杯-第7天 题目->错误票据 标题:错误票据 某涉密单位下发了某种票据,并要在年终全部收回。 每张票据有唯一的ID号。

    相关 训练第三

    一力扣11 1思路 首先我们要确认这是一个迭代最大值的过程,所以可以确定在迭代过程中更新的量,是长度l和两边遍历到的最小值 选择两方指针缩进的遍历方式,