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