程序查找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








