私は文字列アルゴリズムを設計しており、問題は入力のサイズにあります。定義上、Javaの最大文字列長は2147483647なので、混乱〜2.15x10^9を避けることができます。最大の文字列入力長のメモリ使用最適化のための良いテクニック
nは最大の整数は、上述された定義により(サイズnの列)入力の長さである
char[n*2 +3]
〜2.15x10:
Manacherのアルゴリズムは、定義により、文字の配列を必要とします/ 2 -^9ので、文字の配列は、最大サイズのJavaでmanachersアルゴリズムのこの計算
char [ ~2.15x10^9 ];
することができ、inputed文字列にN =(3〜2.15x10^9)の上限を低下させます。正確には正確に1073741822。〜1.1x10^9。
最大長さのchar配列は、(N * 2)+ 32バイト=(〜2.1×10^9 * 2)+ 32バイト=〜4.2x10^9バイト(4.2GBs)
Theresの追加のアレイさまざまなサイズ、セット、およびその他のコレクションから構成されています。私は、これでプログラムが〜30GBsの全体のスペースを占めると信じています。最大1.1×10^9文字の長さであると識別されたアルゴリズムの計算のためのRAMメモリの最大入力のためのものである。
「できるだけ長い文字列入力」と「メモリ管理」の間にも物事を維持するための技術についてアドバイスできますか? (n
は、元の文字列の長さで)あなたは
申し訳ありませんすべての人を本当に混乱させましたが、今は編集しました2。15 x 10^9が正しい表記です!コメントありがとう –
あなたのアルゴリズムは、*バイト*の配列ではなく、16ビットのUTF-16文字の配列を必要としていますか? – Andreas
メモリ使用量を減らすために、文字列入力をバイトに変換する必要がありますか?私はまだコンピュータサイエンスを学んでいるのでもう少し説明してください –