打印通过在给定字符串中插入数字 X 形成的最大整数
给定一个大小为N的字符串S代表一个大整数值和一个正数X ,任务是打印通过在字符串S中插入数字X形成的最大整数。
例子:
Input: S = “99”, X = 9
Output: 999
Explanation:
The largest number that can be formed is 999 after inserting 9 into “99”.
Input: S = “-13”, X = 2
Output: -123
Explanation:
The largest number that can be formed is -123 after inserting 2 into “-13”.
方法:这个问题可以通过遍历字符串S的字符来解决。请按照以下步骤解决此问题:
- 如果数字S为正数,则执行以下步骤:
- 使用变量i在[0, N-1]范围内迭代并执行以下步骤:
- 如果S[i]小于X则在S[i]之前插入数字X并中断循环。
- 如果上述情况都不满足,则将数字X附加到字符串S的末尾。
- 使用变量i在[0, N-1]范围内迭代并执行以下步骤:
- 否则,如果数字S为负数,则执行以下步骤:
- 使用变量i在[0, N-1]范围内迭代并执行以下步骤:
- 如果S[i]小于X ,则在S[i]之前插入数字X并中断循环。
- 如果上述情况都不满足,则将数字X附加到字符串S的末尾。
- 使用变量i在[0, N-1]范围内迭代并执行以下步骤:
- 最后,打印最大可能的字符串,用S表示。
下面是上述方法的实现:
Python3
# 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))
输出
-123
时间复杂度: O(N)
辅助空间: O(1)