我很想知道 PHP 对爆炸/内爆函数使用什么算法,它们的时间复杂度是多少?
提前谢谢你。
最佳答案
在string.c
你可以看到算法。它开始于大约 1021 line ..
if (p2 == NULL) {
add_next_index_stringl(return_value, p1, Z_STRLEN_P(str), 1);
} else {
do {
add_next_index_stringl(return_value, p1, p2 - p1, 1);
p1 = p2 + Z_STRLEN_P(delim);
} while ((p2 = php_memnstr(p1, Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp)) != NULL &&
--limit > 1);
if (p1 <= endp)
add_next_index_stringl(return_value, p1, endp-p1, 1);
}
它只是一个循环所以我认为它具有O(N)
复杂度。并仔细检查代码。它扫描字符串并将结果添加到 return_value
。所以是的。 它是线性的。
关于php - PHP explode/implode 的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077154/