我希望它具有恒定的时间复杂度,但这个名字暗示它实际上是在计算 token 。

最佳答案

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

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;
}

我对 StringTokenizer 不太熟悉,但假设 maxPosition 可以改变(它看起来可以),那么它不是恒定时间。您还必须考虑 skipDelimitersscanToken 的复杂性。

关于java - Java StringTokenizer.countTokens() 的时间复杂度是多少,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52636880/

10-11 18:56