在Python中获取给定字符串的最大长度合并程序
假设有两个字符串s和t。我们必须按照以下方式创建一个名为merge的字符串:只要s或t中有一个不为空,就选择以下其中一种选项―
- 如果s不为空,则将s中的第一个字符附加到merge,并将其从s中删除。
-
如果t不为空,则将t中的第一个字符附加到merge,并将其从t中删除。
因此,我们必须找到我们可以制作的字典上最大的合并项。
因此,如果输入类似于s = “zxyxx”t =“yzxxx”,则输出将是zyzxyxxxxx,因为
- 从s中选择:merge =“z”,s =“xyxx”,t =“yzxxx”
-
从t中选择:merge =“zy”,s =“xyxx”,t =“zxxx”
-
从t中选择:merge =“zyz”,s =“xyxx”,t =“xxx”
-
从s中选择:merge =“zyzx”,s =“yxx”,t =“xxx”
-
从s中选择:merge =“zyzxy”,s =“xx”,t =“xxx”
然后在结束合并时将来自s和t的剩余5个x添加到末尾。
要解决此问题,我们将按照以下步骤进行操作―
- ans:=空字符串
-
idx1:= 0,idx2:= 0
-
while idx1 < size of s and idx2 < size of t, do
- 如果s [idx1] > t [idx2]或(s [idx1]与t [idx2]相同,并且从索引idx1到末尾的s的子字符串> =从索引idx2到结束的t的子字符串),则
- ans: = ans连接s [idx1]
-
idx1:= idx1 +1
-
否则,当s [idx1]<t [idx2]或(s [idx1]与t [idx2]相同,并且从索引idx1到末尾的s的子字符串< =从索引idx2到t的结束的子字符串),则
- ans: = ans连接t [idx2]
-
idx2:= idx2 +1
- 如果s [idx1] > t [idx2]或(s [idx1]与t [idx2]相同,并且从索引idx1到末尾的s的子字符串> =从索引idx2到结束的t的子字符串),则
-
返回ans连接s [from index idx1 to end]连接t [from index idx2 to end]
示例
让我们看以下实现以获得更好的理解-
def solve(s, t):
ans = ""
idx1 = idx2 = 0
while(idx1<len(s) and idx2<len(t)):
if s[idx1] > t[idx2] or (s[idx1]==t[idx2] and s[idx1:]>=t[idx2:]):
ans+=s[idx1]
idx1+=1
elif s[idx1] < t[idx2] or (s[idx1]==t[idx2] and s[idx1:]<=t[idx2:]):
ans+=t[idx2]
idx2+=1
return ans+s[idx1:]+t[idx2:]
s = "zxyxx"
t = "yzxxx"
print(solve(s, t))
输入
[7,4,5,3,8], [[0,2,2],[4,2,4],[2,13,100]]
输出
zyzxyxxxxx