用 Python 编写程序查找所有长度为 n 的倒置数字

pythonserver side programmingprogramming更新于 2026/2/8 16:12:17

假设我们有一个值 n。我们必须找到所有长度为 n 的倒置数字。正如我们所结的,倒置的数字是翻转 180 度后看起来相同的数字。

因此,如果输入为 n = 2,则输出将为 ['11', '69', '88', '96']。

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

  • 定义一个函数 middle() 。这将需要 x

  • 如果 x 为 0,则

    • 返回空白字符串列表

  • 如果 x 与 1 相同,则

    • 返回元素 0、1、8 的新列表

  • ret := 一个新列表

  • mid := middle(x − 2)

  • 对于 mid 中的每个 m,执行

    • 如果 x 与 n 不同,则

      • 在末尾插入 ("0" 连接 m 连接 "0") ret

    • 在 ret 末尾插入 ("1" 连接 m 连接 "1")

    • 在 ret 末尾插入 ("6" 连接 m 连接 "9")

    • 在 ret 末尾插入 ("8" 连接 m 连接 "8")

    • 在 ret 末尾插入 ("9" 连接 m 连接 "6")

  • 返回 ret

  • 从 main 方法中,执行以下操作 −

  • 如果 n 为 0,然后

    • 返回一个新列表

  • 否则返回中间(n)的排序列表

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

示例

class Solution:
   def solve(self, n):
      if not n:
         return []
      def middle(x=n):
         if not x:
            return [""]
         if x == 1:
            return list("018")
         ret = []
         mid = middle(x - 2)
         for m in mid:
            if x != n:
               ret.append("0" + m + "0")
            ret.append("1" + m + "1")
            ret.append("6" + m + "9")
            ret.append("8" + m + "8")
            ret.append("9" + m + "6")
         return ret
      return sorted(middle())
ob = Solution()
print(ob.solve(2))

输入

2

输出

['11', '69', '88', '96']

相关文章


有用资源