程序查找python中所有数字均为奇数的n的最接近数

假设我们有一个数字n,我们必须找到所有数字均为奇数的下一个最接近的值。当有两个值与n最接近时,返回较大的一个。

因此,如果输入类似于n = 243,则输出将为199。

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

  • first_even:= -1

  • s:= n作为字符串

  • l:= s的大小

  • 对于0到l范围内的i,执行

    • first_even:=我

    • 从循环中出来

    • 如果s [i]是偶数,则

    • 如果first_even与-1相同,则

      • 返回n

    • 大:= 1 + s的数值[从索引0到i]

    • 如果s [i]与“ 0”相同,则

      • 小:= s的数值[从索引0到i]-11

      • 小:= s的数值[从索引0到i]-1

      • 如果s [i-1]与“ 1”相同,则

      • 除此以外,

      • 除此以外,

        • 小:= s的数值[从索引0到i]-1

      • 对于范围在i +1到l之间的i

        • 大:=大串联“ 1”

        • 小:=小串联“ 9”

      • 大:=大数值,小:=小数值

      • d2:=大-n,d1:= n-小

      • 如果d1 <d2,则

        • 返回小

      • 否则当d1> = d2时

        • 大回报

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

      例 

      class Solution:

         def solve(self, n):

            first_even = -1

            s = str(n)

            l = len(s)

            for i in range(l):

               if int(s[i]) % 2 == 0:

                  first_even = i

                  break

            if first_even == -1:

               return n

            big = str(int(s[: i + 1]) + 1)

            if s[i] == "0":

               if s[i - 1] == "1":

                  small = str(int(s[: i + 1]) - 1)

               else:

                  small = str(int(s[i : i + 1]) - 11)

            else:

               small = str(int(s[: i + 1]) - 1)

            for i in range(i + 1, l):

               big += "1"

               small += "9"

            big, small = int(big), int(small)

            d2 = big - n

            d1 = n - small

            if d1 < d2:

               return small

            elif d1 >= d2:

               return big

           

      ob = Solution()n = 243

      print(ob.solve(n))

      输入值

      243

      输出结果

      199

      以上是 程序查找python中所有数字均为奇数的n的最接近数 的全部内容, 来源链接: utcz.com/z/334690.html

      回到顶部