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


假设我们有一个值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,则

      • 在ret的末尾插入("0" + m + "0")

    • 在ret的末尾插入("1" + m + "1")

    • 在ret的末尾插入("6" + m + "9")

    • 在ret的末尾插入("8" + m + "8")

    • 在ret的末尾插入("9" + m + "6")

  • 返回ret

  • 在主方法中,执行以下操作:

  • 如果n为0,则

    • 返回一个新列表

  • 否则返回middle(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']

更新于:2020年10月21日

246 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告