入力文字列が長すぎる(長さ> 200,000)場合、次のメソッドは例外をスローします。問題はsubstring()の使用に関連しているようですが、他の投稿を見て、使用方法をString str = new String(s.substring(i,i+k));
に変更しましたが、問題はまだ発生します...メモ帳例外がまだスローされている理由は何ですか? (私は、ヒープサイズを大きくしたくない)非常に大きな文字列で部分文字列を実行するとJavaメモリ不足エラーが発生する
方法:
private static Map<String,Integer> findSubString(String s, int k) {
Map<String,Integer> map = new HashMap<>();
for (int i = 0; i < s.length() - (k - 1); i++) {
String str = new String(s.substring(i,i+k));
if (map.containsKey(str)) {
map.put(str, map.get(str) + 1);
}
else {
map.put(str, 1);
}
}
return map;
}
エラー:私の意見では
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3664)
at java.lang.String.<init>(String.java:207)
at java.lang.String.substring(String.java:1969)
at Solution.findSubString(Solution.java:112)
XmXの値は? – AdamSkywalker
あなたはそれが例えば64GB以上の十分に大きいと仮定することができます。問題はコードにあります。 – xcoder
Javaバージョン? – AdamSkywalker