打印给定字符串中插入数字 X 形成的最大整数
原文:https://www . geesforgeks . org/print-给定字符串中插入数字 x 形成的最大整数/
给定一个代表大整数值的大小为 N 的字符串 S ,以及一个正数 X ,任务是打印字符串 S 中插入数字 X 形成的最大整数。
示例:
输入:S =“99”,X = 9 输出: 999 说明: 在“99”中插入 9 后能形成的最大数字是 999。
输入:S =“-13”,X = 2 输出: -123 说明: 在“-13”中插入 2 后能形成的最大数字是-123。
方法:这个问题可以通过迭代字符串 S 的字符来解决。按照以下步骤解决此问题:
- 如果数字 S 为正,则执行以下步骤:
- 使用变量 i 在范围【0,N-1】中迭代,并执行以下步骤 :
- 如果 S[i] 小于 X ,则在 S[i] 和前插入数字 X ,断开回路。
- 如果以上情况都不满足,则在字符串 S 的末尾追加数字 X 。
- 使用变量 i 在范围【0,N-1】中迭代,并执行以下步骤 :
- 否则,如果数字 S 为负,则执行以下步骤:
- 使用变量 i 在范围【0,N-1】中迭代,并执行以下步骤:
- 如果 S[i] 小于 X ,则在 S[i] 和前插入数字 X ,断开回路。
- 如果以上情况都不满足,则在字符串 S 的末尾追加数字 X 。
- 使用变量 i 在范围【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)
版权属于:月萌API www.moonapi.com,转载请注明出处