Java中的String.split(“split”)是否预先完成了所有工作?

Java中的String.split(“split”)是否预先完成了所有工作?,java,string,Java,String,假设我有一个很长的字符串,名为str,我正在寻找“hello”的第一个实例。现在我们可以说每个标记都由一个空格分隔,但在更复杂的情况下,它不会被分隔,因此使用split而不是StringTokenizer。 现在,让我们假设“hello”只是字符串中的第三个单词。以下算法是O(n)还是O(1) 如果您的数组中有多少令牌并不重要,那么它将是O(1),这是不正确的。这是O(n)您的问题的答案是O(n),因为如果您要查找的单词是最后一个或不存在,则必须查看所有单词,因此线性时间。@jlordo抱歉,是

假设我有一个很长的字符串,名为
str
,我正在寻找
“hello”
的第一个实例。现在我们可以说每个标记都由一个空格分隔,但在更复杂的情况下,它不会被分隔,因此使用split而不是StringTokenizer。 现在,让我们假设
“hello”
只是字符串中的第三个单词。以下算法是
O(n)
还是
O(1)


如果您的数组中有多少令牌并不重要,那么它将是
O(1)
,这是不正确的。这是
O(n)

您的问题的答案是
O(n)
,因为如果您要查找的单词是最后一个或不存在,则必须查看所有单词,因此线性时间。@jlordo抱歉,是的,已更正为.split(“”)。原始字符串中的单词数或字符数是多少?编译器会看到
str.split(“”)
并且不关心您将如何处理结果数组,因此它将绝对分割整个字符串(因为
split
方法就是这样实现的。如果您知道所需的令牌数量,可以使用
split(string regex,int limit)
,请参见[此处](,int))split将分割整个字符串。然后将数组传递给for each循环。O(1)表示没有时间递增参数。但是有。令牌/字的数量会影响性能
for (String word : str.split(" ") )
    if ( word.equals("hello") ) return;