讨论/技术交流/输出最大字符串/

有两个数字字符串 a 和 b,将 b 插入 a 中,a 的 0 号位之前和末尾之后都可以插入,求插入后的最大数字是多少?

一种解法是通过暴力求解会超时

4
共 10 个回复

如果digit前面是0,则直接插入到score的后面
如果digit前面非0,则遍历score,将score中连续的同样位数的数字串subscore与digit比较:
1)如果第一个subscore大于digit,且后面有subscore小于digit,则将digit直接插入到第一个小于digit的subscore前面
2)如果第一个subscore小于digit,则直接将digit插入到score的前面
3)如果所有的subscore均大于digit,则直接将digit 插入到score的后面
'''

def insertObj(score,digit):
res=''
count=0
if not isinstance(int(score),int) and not isinstance(int(digit),int):
return None
if digit[0]=='0':
res=score+digit
return res
else:
length=len(digit)
for i in range(0,len(score)-length+1):
if i==0 and score[0:length]<=digit:
res=digit+score
return res
elif i >0 and i<(len(score)-length+1) and score[i:i+length]<=digit:
res=score[:i]+digit+score[i:i+length]
return res
elif score[i:i+length]>digit:
count+=1
res=score+digit
if count==len(score)-length+1:
return res

print(insertObj('89768','69'))
print(insertObj('89768','67'))
print(insertObj('89768','067'))
print(insertObj('89768','967'))

使得呗哈哈

感觉暴力解法会超时是个伪命题,数字能有多长

我司人员?

题目如下:给定score 数字字符串 如"89768",给定待待插入的数字字符串digit 如"69",(注意digit也可以带前缀0,如"0069"),digit需要整体插入score的头部或中间,或尾部,求插入后可表示最大的数字是多少?

例如:上述最大插入后 最大数字是 8976968

专业级第二题?

是的,是这样,这道理我感觉考虑的情况有点多

a = "123", b="156"
return "15623"
是这样子理解的?

  1. 拼接最大数
    这道题的第二步

同学,你可以把问题描述清楚一点吗?有没有示例,或者直接告诉我们这道题来自 LeetCode 或者是你看的哪本书上的哪一题,这样也可以帮助你更快地得到思路。