c - 在 O(n) 时间内对输入的字母进行排序

标签 c performance big-o

我从一个 friend 的采访中听说了这个问题,我们都对如何找到解决方案感到困惑。他遇到了以下情况: 字符以未排序的顺序一个接一个地输入。在 O(n) 时间内按字母顺序(大写字母在前)输出这些字母。

所以输入的字母范围是'A' -> 'Z' 和 'a' -> 'z'。 显然,将字母移动到数组中并对其进行排序是行不通的(由于所需的时间复杂性)。 那么这将如何工作?阅读字母时,您有什么技巧吗?

最佳答案

trick就是分配一个大小为52的数组,统计每个字母出现的次数。然后只需从左到右扫描该数组,并多次打印每个字母。

关于c - 在 O(n) 时间内对输入的字母进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29057790/

相关文章:

performance - GWT 字符串连接运算符 + 与 stringbuffer

algorithm - Big(O) 可以通过测量来确认吗?

loops - 查找具有多个嵌套循环的Big-O?

math - 通过替换求解递归T(n)= 2T(n/2)+Θ(1)

c - 找到未对齐结构的正确尺寸

c - 编辑我的代码以了解输入是否是二叉树

python - Linux 批量时间

c# - 将关系(规范化)数据表快速插入 SQL Server 2008 数据库

c - 在 C 中使用 fgets 进行乘法运算

c - 如何从c中的数字中的最高有效数字开始获得不同的数字?