2024.3.25力扣(1200-1400)刷题记录

一、1784. 检查二进制字符串字段

1.使用0分割。分割出来的结果是含有“1”的串和空串。

class Solution:
    def checkOnesSegment(self, s: str) -> bool:
        # 使用0分割
        return sum(len(c) != 0 for c in s.split("0")) <= 1

2.遍历

class Solution:
    def checkOnesSegment(self, s: str) -> bool:
        # 除了前面可以出现0,后面不能出现
        # 1最后出现的位置必须在0第一次出现位置的前面
        idx_one = 0
        idx_zero = 100
        for i,c in enumerate(s):
            if c == "0":
                idx_zero = min(idx_zero,i)
            else:
                idx_one = i
        return idx_one < idx_zero

3.寻找“01”串。来自官方题解(. - 力扣(LeetCode))。

class Solution:
    def checkOnesSegment(self, s: str) -> bool:
        # 寻找“01”串
        return "01" not in s

二、2595. 奇偶位数

1.转为字符串

class Solution:
    def evenOddBit(self, n: int) -> List[int]:
        # 转为字符串
        flag = [0]*2    #0位偶1位奇
        num = str(bin(n)[2:])[::-1]
        for i,c in enumerate(num):
            if c == "1":
                flag[i & 1] += 1
        return flag

2.位掩码,来自灵神题解(. - 力扣(LeetCode))。

class Solution:
    def evenOddBit(self, n: int) -> List[int]:
        # 位掩码
        MASK = 0x5555   #十六进制的一个5为二进制的0101
        return [(n & MASK).bit_count(),(n & (MASK >> 1)).bit_count()]

三、2485. 找出中枢整数

1.数学

class Solution:
    def pivotInteger(self, n: int) -> int:
        # 数学
        # x^2 = n*(n+1) // 2
        m = n*(n+1) // 2
        return int(m**0.5) if int(m**0.5)*int(m**0.5) == m else -1

另一种写法,来自灵神题解(. - 力扣(LeetCode))。使用isqrt()函数。

class Solution:
    def pivotInteger(self, n: int) -> int:
        # 数学2
        m = n*(n+1) // 2
        x = isqrt(m)
        return x if x * x == m else -1

isqrt()函数解释(来自chatgpt):

isqrt() 是求整数平方根(integer square root)的函数,通常用于计算一个整数的平方根并返回最大的整数部分作为结果。在某些编程语言或库中,可能提供了内置的函数来实现这一功能。

整数平方根是指小于或等于给定整数的正整数平方根。例如,对于整数 16,其平方根是 4;对于整数 17,其平方根也是 4,因为整数平方根函数会返回最接近但不超过真实平方根的整数值。

2.打表,方法来自灵神题解。列举出范围内的n->x的字典,再调用。很强,这里就不写代码了。

四、 1704. 判断字符串的两半是否相似

统计

class Solution:
    def halvesAreAlike(self, s: str) -> bool:
        # 统计
        mid = len(s) // 2
        num = 0
        for c in s[:mid].lower():
            if c in 'aeiou':
                num += 1
        for c in s[mid:].lower():
            if c in 'aeiou':
                num -= 1
        return num == 0

感谢你看到这里!一起加油吧!

相关推荐

  1. 2024.3.251200-1400记录

    2024-03-26 23:54:05       35 阅读
  2. 2024.3.271200-1400记录

    2024-03-26 23:54:05       42 阅读
  3. 2024.3.311200-1400记录

    2024-03-26 23:54:05       37 阅读
  4. 2024.4.11200-1400记录

    2024-03-26 23:54:05       44 阅读
  5. 100笔记[python]

    2024-03-26 23:54:05       25 阅读
  6. hot100笔记Day1

    2024-03-26 23:54:05       54 阅读
  7. hot100笔记Day4

    2024-03-26 23:54:05       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 23:54:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 23:54:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 23:54:05       82 阅读
  4. Python语言-面向对象

    2024-03-26 23:54:05       91 阅读

热门阅读

  1. 力扣438---找到字符串中所有字母异位词

    2024-03-26 23:54:05       41 阅读
  2. 使用Spring ORM和MyBatis简化数据库访问

    2024-03-26 23:54:05       37 阅读
  3. 13、Spring CLI中的特殊命令

    2024-03-26 23:54:05       44 阅读
  4. LeetCode1047:删除字符串中的所有相邻重复项

    2024-03-26 23:54:05       44 阅读
  5. Python 命名规则

    2024-03-26 23:54:05       41 阅读
  6. __init__.py 的作用

    2024-03-26 23:54:05       43 阅读
  7. vue3之动态路由

    2024-03-26 23:54:05       35 阅读
  8. Python networkx库中,G.add_edge方法的原理和使用方法

    2024-03-26 23:54:05       37 阅读
  9. 【CSP试题回顾】201912-2-回收站选址(优化)

    2024-03-26 23:54:05       39 阅读
  10. My SQL 子查询

    2024-03-26 23:54:05       46 阅读
  11. MySQL写shell的问题

    2024-03-26 23:54:05       41 阅读
  12. MySQL数据库索引失效的常见情况

    2024-03-26 23:54:05       44 阅读
  13. 构建一个springboot项目

    2024-03-26 23:54:05       43 阅读