String
でそれを使用するためのJavaのlastIndexOf
の時間の複雑さは何ですか?仮定 :s
いくつかString
とc
あるint t= s.lastIndexOf(c);
とすぐchar配列は、それがO(N)であるように文字列が実装されているようにjavaのlastIndexOfの時間複雑度はどのくらいですか?
2
A
答えて
0
s.charAt(0)
あります。 O(n)
-
public int lastIndexOf(int ch, int fromIndex) {
if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
// handle most cases here (ch is a BMP code point or a
// negative value (invalid code point))
final char[] value = this.value;
int i = Math.min(fromIndex, value.length - 1);
for (; i >= 0; i--) {
if (value[i] == ch) {
return i;
}
}
return -1;
} else {
return lastIndexOfSupplementary(ch, fromIndex);
}
}
0
はString.lastIndexOf(int)
にとっては線形です。
少なくとも、文字シーケンス全体を反復処理し、終了する必要があります。
これがJavaの機能です。
最悪の場合:"abbbbbbbbbb".lastIndexOf('a')
String.lastIndexOf(String)
のために、それはn
が入力長さであり、m
は、パラメータ長であるO(n*m)
です。
この場合、Javaはstartを終了するまで繰り返し、針の最後の文字に一致する部分があれば、先行する文字と両側の文字を一致させようとします。
0
このメソッドの実装を見てください。両方のコードブランチでは、文字列の内部配列に対する単純な反復処理を含む:
int i = Math.min(fromIndex, value.length - 1);
for (; i >= 0; i--) {
if (value[i] == ch) {
return i;
}
}
したがって複雑さだけO(n)
、すなわち線形です。
関連する問題
- 1. クイックユニオンの時間複雑度はどのくらいですか?
- 2. yieldからのツリートラバーサルの時間複雑度はどのくらいですか?
- 3. 時分割ソートアルゴリズムの時間複雑度はどのくらいですか?
- 4. Neo4jの検索クエリの時間複雑度はどのくらいですか?
- 5. このアルゴリズム(コード)の時間複雑度はどのくらいですか?
- 6. 次のコードの時間的複雑度はどのくらいですか?
- 7. このプログラムフラグメントの時間複雑度はどのくらいですか?
- 8. この関数の時間複雑度はどのくらいですか?
- 9. このdo-whileループの時間複雑度はどのくらいですか?
- 10. この関数の時間複雑度はどのくらいですか?
- 11. この擬似コードの時間複雑度はどのくらいですか?
- 12. アルゴリズム全体の時間複雑度はどのくらいですか?
- 13. 暗号ハッシュ関数の時間複雑度はどのくらいですか?
- 14. クイックソートの平均的な時間複雑度はどのくらいですか?
- 15. JavaのIterator()の時間複雑度
- 16. この順列アルゴリズムの空間複雑度はどのくらいですか?
- 17. プログラムの時間複雑度
- 18. フィボナッチアルゴリズムの時間複雑度
- 19. デデューピングアルゴリズムの時間複雑度
- 20. プログラムの時間複雑度
- 21. クイックセレクト時間の複雑度
- 22. random.sampleの時間複雑度
- 23. Pythonでzip()の時間の複雑さはどのくらいですか?
- 24. JavaScriptのparseInt()の時間の複雑さはどのくらいですか?
- 25. 次の式の時間の複雑さはどのくらいですか?
- 26. ツリートラバーサルの時間の複雑さはどのくらいですか?
- 27. heapifyUp()メソッドの時間の複雑さはどのくらいですか?
- 28. このアルゴリズムの時間複雑度はどのくらいですか?それは少しトリッキーである
- 29. OrientDBでのカウントエッジの時間複雑度
- 30. JavaのLinkedListでsize()呼び出しの時間の複雑さはどのくらいですか?