【算法】算法题-20231221

在这里插入图片描述


一、830. 较大分组的位置

在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。
例如,在字符串 s = "abbxxxxzyy"中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。
分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 “xxxx” 分组用区间表示为 [3,6] 。
我们称所有包含大于或等于三个连续字符的分组为 较大分组 。
找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。

示例1:
输入:s = “abbxxxxzzy”
输出:[[3,6]]
解释:“xxxx” 是一个起始于 3 且终止于 6 的较大分组。

示例 2:
输入:s = “abc”
输出:[]
解释:“a”,“b” 和 “c” 均不是符合要求的较大分组。

示例 3:
输入:s = “abcdddeeeeaabbbcd”
输出:[[3,5],[6,9],[12,14]]
解释:较大分组为 “ddd”, “eeee” 和 “bbb”

示例 4:
输入:s = “aba”
输出:[]

class Solution:
    def largeGroupPositions(self, s: str):
        left = 0
        right = 1

        ans = []
        n = len(s)

        while right <= n:
            # right 越界或 s[left] != s[right] 时的处理
            if right == n or s[left] != s[right]:
                if right - left >= 3:
                    ans.append([left, right - 1])
                # 注意维护更新 left
                left = right
            right += 1
        return ans

二、657. 机器人能否返回原点

在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。
移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。
如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。
注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。

示例 1:
输入: moves = “UD”
输出: true
解释:机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终回到它开始的原点。因此,我们返回 true。

示例 2:
输入: moves = “LL”
输出: false
解释:机器人向左移动两次。它最终位于原点的左侧,距原点有两次 “移动” 的距离。我们返回 false,因为它在移动结束时没有返回原点。

class Solution(object):
    def judgeCircle(self, moves):
        x = y = 0
        for move in moves:
            if move == 'U': y -= 1
            elif move == 'D': y += 1
            elif move == 'L': x -= 1
            elif move == 'R': x += 1

        return x == y == 0
a="UD"
s3=Solution()
res=s3.judgeCircle(a)
print(res)

三、771. 宝石与石头

给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
字母区分大小写,因此 “a” 和 “A” 是不同类型的石头。

示例 1:
输入:jewels = “aA”, stones = “aAAbbbb”
输出:3

示例 2:
输入:jewels = “z”, stones = “ZZ”
输出:0

from collections import Counter

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        stones = Counter(stones)
        return sum(stones.get(x, 0) for x in jewels)


S=Solution()
jewels = "aA"
stones = "aAAbbbb"
print(S.numJewelsInStones(jewels, stones))

在这里插入图片描述

相关推荐

  1. 20231228 SQL基础50打卡

    2023-12-22 10:00:06       45 阅读
  2. 传纸条(算法

    2023-12-22 10:00:06       42 阅读
  3. 前端中级算法

    2023-12-22 10:00:06       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-22 10:00:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-22 10:00:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-22 10:00:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-22 10:00:06       20 阅读

热门阅读

  1. 《漫画算法》笔记——内存管理算法LRU

    2023-12-22 10:00:06       35 阅读
  2. 2866. 美丽塔 II(单调栈)

    2023-12-22 10:00:06       48 阅读
  3. 技术面试的斗智斗勇III

    2023-12-22 10:00:06       43 阅读
  4. Lua脚本在Redis中的高效应用

    2023-12-22 10:00:06       51 阅读
  5. LeetCode day29

    2023-12-22 10:00:06       55 阅读
  6. 基于OpenCV的视频流处理方法

    2023-12-22 10:00:06       41 阅读
  7. vue和react diff的详解和不同

    2023-12-22 10:00:06       50 阅读
  8. 前端八股文(vue篇)

    2023-12-22 10:00:06       42 阅读