Python 中 Double、Reverse 和 Swap 后的模式

pythonserver side programmingprogramming更新于 2025/12/26 4:28:17

假设我们有一个数字 n,我们必须从序列中找到第 n 个值。顺序如下 −

  • xxy
  • xxyxxy
  • yxxyxx
  • xyyxyy
  • xyyxyyxyyxyy
  • ...

要生成下一个值,我们必须遵循这些规则,从 xxy 作为第一个项 −

  • 当我们处于模式的开头时,将其加倍(将字符串与其自身连接)。

  • 当最后一个操作是加倍时,将其反转。

  • 当最后一个操作是反转时,将所有 x 与 y 交换,反之亦然。

  • 重复这些步骤。

因此,如果输入为 n = 5,则输出将为"yyxyyxyyxyyx"

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

  • i := 0
  • ret := "xxy"
  • while i < n,执行
    • 如果 i mod 3 与 0 相同,则
      • ret := ret + ret
    • 否则,当 i mod 3 与 1 相同时,则
      • ret := ret 的子数组,从索引 0 到 end-1
    • 否则,
      • new_stringy := 空字符串
      • 对于 ret 中的每个 c,执行
        • 如果 c 与"x"相同,则
          • new_stringy := new_stringy 连接"y"
        • 否则,
          • new_stringy := new_stringy 连接"x"
      • ret := new_stringy
    • i := i + 1
  • 返回 ret

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

示例

class Solution:
   def solve(self, s):
      i = 0
      ret = "xxy"
      while i < s:
         if i % 3 == 0:
            ret += ret
         elif i % 3 == 1:
            ret = ret[::-1]
         else:
            new_stringy = ""
            for c in ret:
               if c == "x":
                  new_stringy += "y"
               else:
                  new_stringy += "x"
               ret = new_stringy
            i += 1
      return ret
ob = Solution()
print(ob.solve(5))

输入

5

输出

yyxyyxyyxyyx

相关文章


有用资源