为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2021-10-27 16:28:03
我希望它具有恒定的时间复杂度,但这个名字暗示它实际上是在计算令牌。
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

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


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可以改变(它看起来可以),那么它不是恒定时间。您还必须考虑skipDelimiters和的复杂性scanToken。


查看完整回答
反对 回复 2021-10-27
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

不,这不是一定的时间,这是ω(n)哪里n是字符串的长度。

StringTokenizer 的一个简单实现应该采用O(n * d)wheren是字符串的长度,d是分隔符的数量。


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信