我正在做一个题为“连接单词来生成词典中最低的字符串”。
以这个字符串为例:jibw ji jp bw jibw
实际输出结果是:bw jibw jibw ji jp
当我整理这个的时候,我会得到:bw ji jibw jibw jp
。
这是否意味着这不是排序?如果是排序,那么“词典”分类是否考虑到将较短的字符串推到后面?
我读了一些关于lexigographical order的文章,但我看不出这篇文章的任何使用点或场景,你知道吗?
最佳答案
看来你要找的是更好地理解这个问题,所以让我说清楚。通常的字符串排序是字典排序。如果将字符串[jbw,ji,jp,bw,jbw ]排序成词典顺序,排序的序列是[bw,ji,jibw,jibw,jp],这就是你得到的。所以你的问题不是理解“词典编纂”这个词;你已经正确地理解了它。
你的问题是你误读了这个问题。这个问题不要求你按词典顺序排序字符串。(如果是这样,通过排序得到的答案是正确的。)相反,它要求你生成一个字符串,通过以某种顺序连接输入字符串(即,使一个字符串不带空格)得到,这样得到的单个字符串在字典上是最小的。
为了说明这一区别,请考虑将排序后的序列和应答字符串连接起来得到的字符串:
bwjijibwjibwjp //Your answer
bwjibwjibwjijp //The correct answer
现在,当你比较这两个字符串时,请注意,你只比较两个14个字符串,而不是两个字符串序列。你可以看到正确的答案确实比你的答案小得多:你的答案从“BWJJ”开始,而正确的答案从“BWiJB”开始,“BWJB”以词典的顺序出现在“BWJJ”之前。
希望你现在能理解这个问题。这根本不是排序问题。(也就是说,这不是排序输入字符串的问题。您可以对通过排列和连接输入字符串得到的所有可能的字符串进行排序;如果输入字符串的数量很少,这是解决问题的一种方法。)