Python索引处的解码字符串

假设给出一个编码字符串S。我们必须找到解码后的字符串并将其写入磁带,这里一次读取一个字符的编码后的字符串,然后执行以下步骤:

  • 如果读取的字符是字母,则只需将该字母写到磁带上。

  • 如果读取的字符是数字,则将整个当前磁带重复写入数字-总共再写入1次。

现在,如果给出了一些编码后的字符串S并给出了索引K,则在解码后的字符串中找到并返回第K个字母(从1开始的索引)。

因此,如果字符串为“ hello2World3”且k = 10,则输出将为“ o”。这是因为解码后的字符串将为“ hellohelloWorldhellohelloWorldhellohelloWorld”,因此第十个字符为“ o”。

为了解决这个问题,我们将遵循以下步骤-

  • 大小:= 0

  • 为我在字符串s

    • 如果i是数字字符,则size:= size * i的整数,否则size:= size + 1

  • 对于i,其范围为s – 1到0

    • k:= k mod大小

    • 如果s [i]是数字且k = 0,则返回s [i]

    • 如果s [i]是数字,则将size减小1,否则size:= size / s [i]的整数

  • 返回空字符串

让我们看下面的实现以更好地理解-

示例

class Solution(object):
   def decodeAtIndex(self, s, k):
      """
      :type S: str
      :type K: int
      :rtype: str
      """
      size = 0
      for i in s:
         if i.isdigit():
            size *= int(i)
         else:
            size += 1
      #print(size)
      for i in range(len(s) - 1, -1, -1):
         k %= size
         if s[i].isalpha() and k == 0:
            return s[i]
         if s[i].isalpha():
            size -=1
         else:
            size /= int(s[i])
      return ""
ob = Solution()print(ob.decodeAtIndex("hello2World3", 10))

输入项

"hello2World3"
10
ob.decodeAtIndex("hello2World3", 10)

输出结果

o