我正在从事此算法练习,但我不完全理解其表述。这是练习:
给出一个字符串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”不是一个可能的答案,我想我误会了任务
答案 0 :(得分:2)
您正在正确阅读问题,其描述已损坏。 "abcd"
和"abdc"
都在可能产生的字符串列表中,但不在它们的列表中。