我希望它具有恒定的时间复杂度,但这个名字暗示它实际上是在计算令牌。
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。
红颜莎娜
TA贡献1842条经验 获得超12个赞
不,这不是一定的时间,这是ω(n)
哪里n
是字符串的长度。
StringTokenizer 的一个简单实现应该采用O(n * d)
wheren
是字符串的长度,d
是分隔符的数量。
添加回答
举报
0/150
提交
取消