私は最大100万桁の整数のために回文を見つける必要があるSphere Online Judge(SPOJ)の問題The Next Palindromeを試しています。私は文字列を逆転させるためにJavaの関数を使うことを考えましたが、これはStringの長さを許すでしょうか?Java Stringにはいくつの文字を含めることができますか?
答えて
- あなたの(いつも2147483647(2 Java仕様、Stringクラスは、内部ストレージのために使用する配列の最大サイズにより、1))またはハーフ最大ヒープサイズ(各文字は2バイトなので)のいずれか小さい方。
...または最大ヒープサイズを2で割った...文字は2バイトです – ChssPly76
@ ChssPly76:はい、正しいです。私は私の答えを編集しました、ありがとう。 –
どのようにして最大のヒープサイズがわかりますか?また、裁判官が私の問題をテストするために使用しているJava仮想マシンがJVM依存の仕様のInteger.MAX_VALUE部分であるかどうかわかりません。 – andandandand
私は、彼らが内部配列によって保持され、そして配列は、Javaの整数でインデックス化されるよう、彼らは、最大2^31-1文字にすることができると信じて。
あなたは長さ Integer.MAX_VALUEの文字列を取得することができるはず内部実装無関係です。文字データをlong型の配列に格納できない理由はありません。問題は、インターフェイスがintを長さに使用することです。 'getBytes'などは、非常に大きな文字列を入力しようとすると問題が発生することがあります。 –
それは本当です - 私はその事実を暗示していました。私の悪い。 – aperkins
Integer.MAX_VALUEでは、文字列の最大サイズです+あなたのメモリサイズに依存なく、球体のオンライン裁判官の問題は、あなたがこれらの機能を使用する必要はありません
あなたの番号を保持するためにBigDecimal
代わりString
の使用を検討しています?
これは、アプリケーションが数字を使って何をするかによって異なります。回文を見つけたり、(10進)桁を数えたりといった文字列の処理を行う場合は、文字列を使用する方が良いでしょう。算術演算を行う場合、BigDecimal(またはBigInteger)が優れています。 –
問題は「各Kに対して、Kよりも大きな最小の回文を出力します。 (Kは与えられた数です)。例:999999999999より大きい次のパリンドローム、または12922より大きい次のパリンドロームを見つけます。 –
ヒープ部分が悪化し、私の友人。 UTF-16は、16ビットに制限されることを保証するものではありません、あなたは、Googleのアプリケーションエンジンを使用する場合は、com.google.appengine.api.datastore.Textは助けることができる32
Javaの 'char'型は例外です16ビットを正確に使用するので、UTF-16のビット数は実際には問題になりません。 – awksp
に拡張することができます。 1つの文字列に最大1メガバイトを格納できます。あなたは文字Integer.MAX_VALUEで理論的には、JVMは、それが使用できる配列のサイズに制限されていますが
文字列はすでに2GBまで格納できるため、1MBまで格納できるクラスはここでは役に立ちません。 –
これを詳しく説明したWebページへのリンクを含めると答えが広がります –
。
オラクルのJava 8更新にpublic static void main(String... args) {
for (int i = 0; i < 4; i++) {
int len = Integer.MAX_VALUE - i;
try {
char[] ch = new char[len];
System.out.println("len: " + len + " OK");
} catch (Error e) {
System.out.println("len: " + len + " " + e);
}
}
}
92プリント
len: 2147483647 java.lang.OutOfMemoryError: Requested array size exceeds VM limit
len: 2147483646 java.lang.OutOfMemoryError: Requested array size exceeds VM limit
len: 2147483645 OK
len: 2147483644 OK
注
:ジャワ9において、文字列が使用するマルチバイト文字が複数のバイトを使用して減少させることを意味するバイト[]さらに最大。 4バイトのコードポイントがすべてある場合絵文字、あなただけの約500万字Javaコンパックの[Compact Strings](http://openjdk.java.net/jeps/254)は、 Latin-1またはUTF-16エンコーディング可変長符号化はありません。つまり、3バイト文字はありません。 – apangin
@apangin「UTF-8などの代替エンコーディングを使用することは目標ではありません」という訂正をお願いします。 –
Java9がString.valueを保存するために[]バイトを使用していますので、あなただけJava9で1ギガバイトの文字列について取得することができます取得します。一方、Java8は2GBの文字列を持つことができます。私は「文字」の意味の文字で
、一部の文字は、それがより多くの(現在は2)文字がかかりますので、(絵文字の一部のように)BMPで表現ではありません。
- 1. Sassセレクタに '%'文字を含めることはできますか?
- 2. 文字配列にヌル文字と除外文字を含めることの違いは何ですか?
- 3. HashMap <String、String>のJava ArrayListにキーが含まれていることを確認してください。
- 4. Java String to byte [](文字列にオブジェクトデータが含まれています)
- 5. ソースコード文字列にヌルバイトを含めることはできません
- 6. はvar_promptをロールに含めることができますか?
- 7. std :: stringにはAscii文字のみが含まれていますか?
- 8. Androidの "空の" Fragmentコンストラクタにいくつかの変数を含めることはできますか?
- 9. Java:文字列はいつ文字列constプールに入りますか?ここ
- 10. Facebookのフィードにいくつかのjavascriptを含めることはできますか?
- 11. RouteCompilerのLaravel DomainExceptionルート名に32文字以上の文字列を含めることはできません。
- 12. 1ページに含めることができるiframeタグの数はいくつですか?
- 13. JavaコンパイラにはString Constant Foldingが含まれていますか?
- 14. 含まれる文字列を格納する方法。 Stringに[] javaの
- 15. print文の中にforループを含めることはできますか?
- 16. アクセント文字のためにjupyterノートブックを開くことができません
- 17. これらの文字を含む文字セットと比較したとき、2つの絵文字が正しくない長さを返します。
- 18. 文字列リテラルが必要なときはいつでもstd :: string :: c_str()を使用できますか?
- 19. 文字列を配列にプッシュするときにいくつかの文字を取り除くことができない
- 20. 私はJavaオブジェクトにいくつかの文字列を含むリストを変換する必要が
- 21. PHP、文字列に文字列が含まれている場合はどうすれば見つけることができますか?
- 22. ボタンをクリックすると別のJavaアプリケーションに文字を書くことはできますか?
- 23. 文字セットに関係なく、文字列にアルファベットのみが含まれていることを素早く正確にチェックしますか?
- 24. RTFを読むことができませんANSiファイルにはアラビア文字が含まれています
- 25. std :: stringからいくつかの文字を取得するにはどうすればいいですか?
- 26. この文字は何ですか:?類似の文字はどこで見ることができますか?
- 27. 正規表現は、それが少なくとも一つの小文字の文字、大文字の文字、1つの数字、1つのシンボルなし空白が含まれているかどうか、文字列を検証するため
- 28. オーディオファイルに改行を含めることはできますか?
- 29. サイトスコープノードにブートストラップバッジを含めることはできますか?
- 30. カスタムフォントをXIBに含めることはできますか?
あなたは、あなたが指定したサイズで、最大100万文字までの長さの回文を生成する関数を書く必要があると言っていますか? – Robert
*問題*(SPOJから)に100ギガバイトのファイルが含まれていて、一度に文字列にロードするのが好きですか?真剣に...スキャナを使用してください! –
可能な重複[Javaで文字列の最大長 - 長さ()メソッドの呼び出し](https://stackoverflow.com/questions/816142/strings-maximum-length-in-java-calling-length-method) – Bergi