算法练习

时间:2018-06-21 22:57:45

标签: algorithm

我正在从事此算法练习,但我不完全理解其表述。这是练习:

  

给出一个字符串str和成对的数组,该数组指示其中的索引   该字符串可以交换,返回字典上最大的字符串   这是因为进行了允许的互换。您可以交换任何索引   次数。

     

示例

     

对于str =“ abdc”,对= [[1,4],[3,4]],输出应为   swapLexOrder(str,对)=“ dbca”。

     

通过交换给定的索引,您将获得以下字符串:“ cbda”,“ cbad”,   “ dbac”,“ dbca”。在此列表中,按字典顺序最大的字符串是   “ dbca”。

     

输入/输出

     

[执行时限] 4秒(js)

     

[输入]字符串str

     

仅包含小写英文字母的字符串。

     

保证的约束条件:1≤长度≤104。

     

[input] array.array.integer对

     

包含可在str中交换的索引对的数组   (基于1)。这意味着对于每对[i],您都可以在   具有索引对[i] [0]和对[i] [1]的str。

     

保证的约束:0≤pair.length≤5000,pairs [i] .length = 2。

     

[输出]字符串

我的问题是,为什么“ abcd”不是一个可能的答案(只需在原始字符串“ abdc”上交换索引3和4)?该示例显示

  

通过交换给定的索引,您将获得以下字符串:“ cbda”,“ cbad”,   “ dbac”,“ dbca”。在此列表中,按字典顺序最大的字符串是   “ dbca”

我了解,即使“ abcd”是可能的答案,“ dbca”在字典上也是最大的,所以答案是相同的。但是,如果我不明白为什么“ abcd”不是一个可能的答案,我想我误会了任务

1 个答案:

答案 0 :(得分:2)

您正在正确阅读问题,其描述已损坏。 "abcd""abdc"都在可能产生的字符串列表中,但不在它们的列表中。