最近、インタビューの質問で、perl で文字列を反転するように求められました。私がコードを書いたところ、彼らはそれをテストするためにいくつかのサンプル文字列を提供するように求めました。文字数が少ない文字列、文字数が多い文字列、無効な文字などの例を挙げましたが、テストする最も長い文字列は何かも尋ねました。私は何を言うべきかわかりませんでした。したがって、この質問。perl コードでテストできる最長の文字列は? それは何に依存していますか?マシンのメモリ? perl の観点からの制限はありますか?
2 に答える
最長の文字列に関する公式ドキュメントが見つかるかどうかを確認していました。http://perltutorial.orgで文字列について話しているものを見つけました。
Perl は文字列を一連の文字として定義します。最短のストリングには、文字またはヌル・ストリングが含まれていません。最長の文字列には無制限の文字を含めることができますが、これはコンピューターの使用可能なメモリにのみ制限されます。
これがあなたにとって十分に公式であるかどうかはわかりません。FAQ や Perldoc に何かが載っていると嬉しいです。
ちなみに、Perl で公式に文字列を反転するには:
my $rev_string = reverse $string;
これは Perl FAQ #4 にあり、文字列処理に関するものがたくさんあります。文字列の逆の質問は、誰かが難解な Perl のことを知っているかどうかを確認するための古いトリック インタビューの質問です。確かにほとんどの人reverse
は配列を逆にすることを知っていますが、文字列を逆にすることも知っていますか? 初心者はある種の複雑なアルゴリズムを解決し、面接担当者は独り善がりでその人を雇わない理由ができます。
個人的には、もし私が誰かにインタビューしていたら、私はこの質問をしました.誰かが洗練されたアルゴリズムでその場に現れ、短い、長い、無効な文字でどのように機能するかを教えてくれました.私は彼らを雇います. 新しいばかげた Perl のトリックはいつでも学ぶことができますが、すぐに使えるタイプの思考を見つけるのは難しいものです。
私はずっと前に誰かがインタビューで同じ質問をしたときにリバースストリングトリックを学びました. FAQ を調べて見つけたところ、間違っていたことに気付きました。私はほぼ 20 年間 Perl を使用してきましたが、Perl 文字列を逆にする必要があったことは一度もありません。
基本的に、これはプログラム (つまり Perl) がアクセスできるメモリの量に依存します。32 ビット マシンを使用している場合、それは 4 GiB 未満です。64 ビット マシンを使用している場合、制限はおそらくより大きく、使用可能な仮想メモリによって異なります。一定の制限はありません。