Java StringTokenizer.countTokens()的时间复杂度是多少

Jam*_*zba 3 java string

我希望它具有恒定的时间复杂性,但名称暗示它实际上是在计算令牌.

Jac*_* G. 5

如果你很好奇,这是实施:

public int countTokens() {
    int count = 0;
    int currpos = currentPosition;
    while (currpos < maxPosition) {
        currpos = skipDelimiters(currpos);
        if (currpos >= maxPosition)
            break;
        currpos = scanToken(currpos);
        count++;
    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)

我不太熟悉StringTokenizer,但假设maxPosition可以改变(它看起来可以),那么它不是恒定的时间.你还必须考虑到skipDelimiters和的复杂性scanToken.