Leetcode刷题记(1)

题目

  1. 找出第 K 个字符 I
    已解答
    简单
    相关标签
    premium lock icon
    相关企业
    提示
    Alice 和 Bob 正在玩一个游戏。最初,Alice 有一个字符串 word = "a"。

给定一个正整数 k。

现在 Bob 会要求 Alice 执行以下操作 无限次 :

将 word 中的每个字符 更改 为英文字母表中的 下一个 字符来生成一个新字符串,并将其 追加 到原始的 word。
例如,对 "c" 进行操作生成 "cd",对 "zb" 进行操作生成 "zbac"。

在执行足够多的操作后, word 中 至少 存在 k 个字符,此时返回 word 中第 k 个字符的值。

注意,在操作中字符 'z' 可以变成 'a'。

解答思路:
刚开始想了个两个字符串,用copy.deepcopy来做,不过后面又想了想,内存占用可能过多?于是换了一种思路,不是累加长度,而是翻倍之后直接乘长度,这样好一些

class Solution(object):
    def kthCharacter(self, k):
        """
        :type k: int
        :rtype: str
        """
        length = 1
        str_1 = 'a'
        while length < k:
            for i in range(length):
                str_1 += chr(ord(str_1[i])+1)
            length *= 2
        return str_1[k-1]

执行用时分布
19
ms
击败
66.67%

复杂度分析
消耗内存分布
12.17
MB
击败
83.33%

posted @ 2025-07-04 21:33  CalvinMax  阅读(9)  评论(0)    收藏  举报