我从朋友那里听说过他的采访,我们对如何找到解决方案感到困惑。他被给予以下情况: 字符以未排序的顺序逐个输入。在O(n)时间内按字母顺序输出这些字母(首字母大写)。
因此输入的字母跨度为'A' - > 'Z'和'a' - > 'Z'。 显然,这不会通过将字母移动到数组并对它们进行排序(由于所需的时间复杂性)而起作用。 那怎么会这样呢?你在阅读这些信件时是否有诀窍?
答案 0 :(得分:5)
trick是分配一个大小为52
的数组,并计算每个字母的出现次数。然后只需从左到右扫描该数组,并多次打印每个字母。
答案 1 :(得分:3)
它被称为radix sort,它适用于您对固定范围或平面分布进行排序的任何情况。
答案 2 :(得分:0)
排序> Ascii上升。这一切都得到了照顾。