我正在学习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()是否意味着同样的事情。
答案 0 :(得分:4)
设n为字符串中的字符数。 你的循环显然迭代n次(因为text.length()== n),每次迭代都做不变的工作(加法)。
你的循环应该是O(n)
编辑:其他答案都错了。您没有返回字符串,也没有附加到StringBuilder。您正在添加每个ASCII字符的int值,并返回总数。
答案 1 :(得分:0)
是O(n)。但是,一个简单的更改可以使O(1)
在此处。将方法正文更改为return text;
。 String
是不可改变的;按角色创建复制角色毫无意义。