algorithm - 字典排序

标签 algorithm lexicographic

我正在做一个问题,它说“连接单词以生成字典顺序上可能的最低字符串。”来自比赛。

以这个字符串为例:jibw ji jp bw jibw

实际输出结果是:bw jibw jibw ji jp

当我对此进行排序时,我得到:bw ji jibw jibw jp

这是否意味着这不是排序?如果是排序,“字典序”排序是否考虑将较短的字符串推到后面之类的?

我一直在阅读 lexigographical order我没有看到任何使用它的点或场景,你有吗?

最佳答案

看来你要找的是对问题的更好理解,所以让我说清楚。通常对字符串的排序字典排序。如果将字符串 [jibw, ji, jp, bw, jibw] 排序为字典顺序,排序后的序列 [bw, ji, jibw, jibw, jp],这就是您得到的。所以你的问题不在于理解“词典”这个词;你已经正确理解了。

您的问题是您误解了问题。该问题不会要求您按字典顺序对字符串进行排序。 (如果是这样,你通过排序得到的答案就是正确的。)相反,它要求你生成一个字符串,通过按某种顺序连接输入字符串得到(即,使一个字符串没有空格),以便生成的单个字符串在字典上是最小的。

为了说明差异,请考虑通过连接排序序列和答案字符串得到的字符串:

bwjijibwjibwjp //Your answer
bwjibwjibwjijp //The correct answer

现在,当您比较这两个字符串时——请注意,您只是比较两个 14 个字符的字符串,而不是两个字符串序列——您会发现正确答案确实在字典序上小于您的答案:您的答案以“bwjij”,而正确答案以“bwjib”开头,并且“bwjib”按字典顺序排在“bwjij”之前。

希望你现在明白了这个问题。这根本不是一个排序问题。 (也就是说,这不是对输入字符串进行排序的问题。您可以对通过排列和连接输入字符串得到的所有可能字符串进行排序;这是解决问题的一种方法,如果数字输入字符串很小。)

关于algorithm - 字典排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4632714/

相关文章:

c++ - 使用分治法求一个数的n次方根

javascript - NxN 棋盘的 TicTacToe 获胜逻辑

algorithm - 二叉搜索树和m-way树的区别

c - 按字典顺序对整数数组进行排序

vb.net - 在 vb.net 中查找列表值的所有组合(笛卡尔积)

algorithm - 平衡值(value)集

c++ - 删除重复后选择字典序最小的字符串

java - 如何按字典顺序循环特定长度的所有可能 vector ?

c# - C# 字典序排序

java - Java String.getBytes ("UTF-8") 是否保留词典顺序?