原文:
给定一个代表大整数值的大小为 n 的 s ,以及一个正数 x ,任务是打印字符串 s 中插入数字 x 形成的最大整数。
示例:
输入:s =“99”,x = 9 输出: 999 说明: 在“99”中插入 9 后能形成的最大数字是 999。
输入:s =“-13”,x = 2 输出: -123 说明: 在“-13”中插入 2 后能形成的最大数字是-123。
方法:这个问题可以通过 s 的字符来解决。按照以下步骤解决此问题:
- 如果数字 s 为正,则执行以下步骤:
- 【0,n-1】中迭代,并执行以下步骤 :
- 如果 s[i] 小于 x ,则在 s[i] 和前插入数字 x ,断开回路。
- 如果以上情况都不满足,则在 s 的末尾追加数字 x 。
- 【0,n-1】中迭代,并执行以下步骤 :
- 否则,如果数字 s 为负,则执行以下步骤:
- 【0,n-1】中迭代,并执行以下步骤:
- 如果 s[i] 小于 x ,则在 s[i] 和前插入数字 x ,断开回路。
- 如果以上情况都不满足,则在 s 的末尾追加数字 x 。
- 【0,n-1】中迭代,并执行以下步骤:
- 最后,打印最大可能的字符串,用 s 表示。
下面是上述方法的实现:
python 3
# python program for the above approach
# function to find largest number after
# insertion of a digit
def largestvalue(s, x):
# if s is negative
if s[0] == '-':
f = 0
# iterate through characters of s
for i, val in enumerate(s):
if i == 0:
continue
# if digit x is less
# than s[i] insert digit
# after x
if x < int(val):
f = 1
s = s[:i] str(x) s[i:]
break
if f == 0:
s = s str(x)
# if s is positive
else:
f = 0
# if x > s[i] insert x
for i, val in enumerate(s):
if x > int(val):
f = 1
s = s[:i] str(x) s[i:]
break
if f == 0:
s = s str(x)
# return the answer
return s
# driver code
# given input
s = "-13"
x = 2
# funtion call
print(largestvalue(s, x))
output
-123
时间复杂度:o(n) t5辅助空间:** o(1)
麻将胡了pg电子网站的版权属于:月萌api www.moonapi.com,转载请注明出处