【问题标题】:Selecting next lexicographical shortest element选择下一个词典最短元素
【发布时间】:2017-09-27 20:45:33
【问题描述】:

杰克和丹尼尔是朋友。他们都喜欢字母,尤其是大写字母。 他们正在从报纸上剪下大写字母,每个人都将自己的字母集合存放在不同的堆栈中。 美好的一天,摩根拜访了杰克和丹尼尔。他看到了他们的收藏。摩根想知道由这两个集合组成的字典上最小的字符串是什么。当它在堆栈的顶部时,他可以从集合中取出一封信。 此外,Morgan 想要使用男孩收藏中的所有字母。

输入格式

第一行包含测试用例的数量,t。 接下来的每两行都有这样的格式:第一行包含字符串a,第二行包含字符串b。

在新行中为每个测试用例输出字典顺序最小的字符串。

示例输入

2

杰克

丹尼尔

ABACABA

ABACABA

样本输出

达杰克尼尔

AABABACABACABA

这是我的方法:

t = int(raw_input())
for _ in range(t):
    a = raw_input()
    b = raw_input()
    i = 0
    j = 0
    prev = 0
    res = ""
    while i < len(a) and j < len(b):
        if a[i:] < b[j:]:
            res += a[i]
            i += 1
            prev = 0
        elif a[i:] > b[j:]:
            res += b[j]
            j += 1
            prev = 1
        else:
            if prev == 0:
                res += a[i]
                i += 1
                prev = 0
            else: 
                res += b[j]
                j += 1
                prev = 1
    print res + a[i:]+b[j:]

【问题讨论】:

  • 你的方法有什么问题?到目前为止,您尝试了哪些方法来解决您面临的问题?
  • 这里有实际问题,还是只是作业问题?
  • 我能够清除上述两个测试用例,但是当我尝试执行这些测试用例时它开始失败 2 BBBABA BBBABB BBBABB BBBABA 我应用的逻辑有问题吗? , 不,这不是作业问题,我只是在练习字符串问题,无法完成这个问题。谢谢@ilim
  • 对于 BBBABA BBBABB,您的程序将打印 BBBABABBBABB。这不是正确的答案吗?

标签: python string algorithm


【解决方案1】:

考虑a = "C"b = "CA" 的情况。您的程序输出将是"CCA",但正确答案是"CAC"。问题是您的代码更喜欢"C" 而不是"CA",因为"C" &lt; "CA"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2017-11-28
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多