0
strlen
複雜度是O(1),因爲字符串結構保存字符串長度,但mb_strlen
?請解釋我,爲什麼?哪種複雜性mb_strlen?
strlen
複雜度是O(1),因爲字符串結構保存字符串長度,但mb_strlen
?請解釋我,爲什麼?哪種複雜性mb_strlen?
查看source code最糟糕的情況是O(N)。
mbtab = encoding->mblen_table;
n = 0;
p = string->val;
k = string->len;
/* count */
if (p != NULL) {
while (n < k) {
m = mbtab[*p];
n += m;
p += m;
len++;
};
}
正如我發現的,速度取決於它使用的編碼。一般來說,它比'strlen'做更多的工作。它不僅要計算字節數,還必須預先解析爲char。這就是我發現的。 –
由於字符串需要按順序處理以計算每個代碼點,所以認爲它是公平的(0) – Federkun
* strlen複雜度是O(1)* - 您在哪裏得到這些信息? – apokryfos