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