Java:循环字符串长度时间复杂度

时间:2018-04-03 23:58:22

标签: java string for-loop time-complexity big-o

我正在学习Big O表示法,并且想知道这个for循环的时间复杂度是多少。

public int loop(String text)
{
    int result = 0;

    for (int i = 0; i < text.length(); i++)
    {   
        result += text.charAt(i);   
    }

    return result;

}

我不确定时间复杂度是O(n)还是O(1)。我知道如果循环是n,我会假设O(n)的时间复杂度,但我不确定text.length()是否意味着同样的事情。

2 个答案:

答案 0 :(得分:4)

设n为字符串中的字符数。 你的循环显然迭代n次(因为text.length()== n),每次迭代都做不变的工作(加法)。

你的循环应该是O(n)

编辑:其他答案都错了。您没有返回字符串,也没有附加到StringBuilder。您正在添加每个ASCII字符的int值,并返回总数。

答案 1 :(得分:0)

是O(n)。但是,一个简单的更改可以使O(1)在此处。将方法正文更改为return text;String是不可改变的;按角色创建复制角色毫无意义。