最近,我在一个面试问题中被要求在 perl 中反转一个字符串。我编写了代码,他们希望我提供一些示例字符串来测试它。我给了他们一些例子,比如一个字符很少、字符很多、无效字符等的字符串。但他们也问我要测试的最长的字符串是什么。我不知道该说什么。因此这个问题。我可以在 perl 代码中测试的最长字符串是多少?它取决于什么?机器内存?从 perl 的角度来看有什么限制吗?
2 回答
我正在寻找是否可以找到有关最长字符串的任何官方文档。我在http://perltutorial.org找到了一个关于字符串的内容:
Perl 将字符串定义为字符序列。最短的字符串不包含任何字符或空字符串。最长的字符串可以包含无限的字符,这仅限于您计算机的可用内存。
我不知道这对你来说是否足够正式。很高兴在 FAQ 或 Perldoc 中看到一些内容。
顺便说一句,在 Perl 中正式反转一个字符串:
my $rev_string = reverse $string;
这是在 Perl FAQ #4 中,其中有一堆字符串处理的东西。反向字符串问题是一个古老的面试问题,用于查看是否有人知道他们神秘的 Perl 知识。当然几乎每个人都知道reverse
会反转一个数组,但他们是否也知道它会反转一个字符串?Noobies会制定出某种复杂的算法,面试官会有理由自鸣得意而不雇用那个人。
就个人而言,如果我在面试某人,我问了这个问题,有人当场提出了一个优雅的算法,并向我展示了它如何处理短、长和无效字符,我会雇用他们。你总是可以学习新的愚蠢的 Perl 技巧,但是快速上手的思维方式是很难找到的。
很久以前,当有人在采访中问我同样的问题时,我学会了反向字符串技巧。我在常见问题解答中查找并发现它并意识到我做错了。我已经使用 Perl 将近 20 年了,我想不出我曾经不得不反转 Perl 字符串的时间。
从根本上说,它取决于您的程序(即 Perl)可以访问的内存量。如果你有一台 32 位的机器,那就是低于 4 GiB。如果您有一台 64 位机器,那么限制可能更大,并且取决于可用的虚拟内存。没有固定的限制。