原文:

给定一个代表大整数值的大小为 ns ,以及一个正数 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
  • 否则,如果数字 s 为负,则执行以下步骤:
    • 【0,n-1】中迭代,并执行以下步骤:
      • 如果 s[i] 小于 x ,则在 s[i]前插入数字 x ,断开回路。
    • 如果以上情况都不满足,则在 s 的末尾追加数字 x
  • 最后,打印最大可能的字符串,用 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)