【发布时间】:2018-03-10 14:05:27
【问题描述】:
请描述(没有实现!)算法(可能最快) 它接收由 n 个字母和正整数 k 组成的字符串 参数,并打印长度为 k 的最频繁子串(如果 有多个这样的子字符串,算法打印其中任何一个)。 字符串由字母“a”和“b”组成。例如:对于字符串 ababaaaabb 和 k=3 答案是“aba”,它出现了 2 次(事实上 它们重叠并不重要)。描述一个算法,证明它 正确性并计算其复杂度。
我只能使用 C++ 的最基本功能:没有向量、类、对象等。我也不知道字符串,只知道 char 表。有人可以向我解释一下算法是什么,可能在代码中实现以便于理解吗?那是大学考试的问题,所以才这么奇怪。
【问题讨论】:
-
不清楚你是如何从那个描述中得到你所指的 C++ 或这个神秘的 C/C++(不存在)的。
-
@UlrichEckhardt:早期的 C++ 实现是通过宏在 C 代码中构建的。
-
这与历史相关,@YvesDaoust,但即使在 20 年前,您已经拥有原生 C++ 编译器。而且,C/C++ 的确切含义是什么?恕我直言,这只是由不了解这是两种不同编程语言的人所做的。
-
@UlrichEckhardt:我相信这个问题可以通过在 C 和 C++ 编译器下都可以工作的代码来解决。
-
对不起,我不知道这样写不好,我所有的教授都这样写。它指的是 C 或 C++,因为假设在本课程中我们的程序非常简单,它们在两种语言中基本上几乎相同(因为我们不允许使用 C++ 之类的对象的更高级功能)。