0 レビュー
4 回答
php-文字列がO(1)時間計算量で長すぎるかどうかを判断する方法は?
私はtryingで、stringが10,000文字を超えているかどうかを確認しています。そうである場合は、pri n t too long
にする必要があります。私はnをstrlen
で実行できますが、nの時間の複雑さは{です。 -code-3}
、これはnそれほど悪くはありませんが、someo n e e nの場合は、毎回10,000文字を繰り返す必要があります。 10,000文字ですが、私のsomeo n e e nが1ミリオn文字の場合、それは悪い n
です。つまり、私の解決策nは、10,001番目の文字が設定されているかどうかを確認することです。設定されている場合、nは明らかにtoo longです。これは機能しますか?または、これが機能することもあります(n d depe n ds o nメモリの割り当て方法/割り当て方法)
わからない
0
レビュー
答え :
解決策:
strlenでこれを実行できることはわかっていますが、時間計算量はO(n)です
誰がこれを言っているのかわかりません。
strlen
は単にlen
プロパティを返します。strlen の定義では、
を取得します。ZSTR_LEN
マクロを使用して文字列lengthZEND_FUNCTION(strlen) {{ zend_string * s; ZEND_PARSE_PARAMETERS_START(1、1) Z_PARAM_STR(s) ZEND_PARSE_PARAMETERS_END(); RETVAL_LONG(ZSTR_LEN(s)); }
そしてZSTR_LEN
の定義#define ZSTR_LEN(zstr)(zstr)-> len
わからない
0
レビュー
答え :
解決策:
<?php
if (isset($str[100001])) {
... do my stuff ...
} ?>
isset関数は$str[10001]で実行されます。これは、配列内の1つのアドレスであるため、o[1]です。また、phpのインデックスからキーにアクセスしている間、エラーをスローしたり、メモリリークを引き起こしたりすることはありません。 trycatchブロックでキャッチできるOutOfBoundsException例外をスローします。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。