2016-11-14 44 views
0

strlen複雜度是O(1),因爲字符串結構保存字符串長度,但mb_strlen?請解釋我,爲什麼?哪種複雜性mb_strlen?

+1

正如我發現的,速度取決於它使用的編碼。一般來說,它比'strlen'做更多的工作。它不僅要計算字節數,還必須預先解析爲char。這就是我發現的。 –

+1

由於字符串需要按順序處理以計算每個代碼點,所以認爲它是公平的(0) – Federkun

+0

* strlen複雜度是O(1)* - 您在哪裏得到這些信息? – apokryfos

回答

1

查看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++; 
    }; 
}