Java 这个算法的运行时间是多少

Java 这个算法的运行时间是多少,java,algorithm,Java,Algorithm,运行时间是多少 String[] stringCombo = new String[5]; for (int i = 0; i < stringCombo.length; i++) { stringCombo[i] = deleteCharAt(s,i); s = original; } 以下是[]的Java源代码。查看子字符串,您会发现子字符串(..)的顺序是O(1)(在Java6之前)。[[对于Java>=7,子字符串实际上涉及复

运行时间是多少

   String[] stringCombo = new String[5];
    for (int i = 0; i < stringCombo.length; i++) {
        stringCombo[i] = deleteCharAt(s,i);
        s = original;
    }

以下是[]的Java源代码。查看
子字符串
,您会发现
子字符串(..)
的顺序是O(1)(在Java6之前)。[[对于Java>=7,子字符串实际上涉及复制(sub)数组,它是一个
O(N)
操作(参见下面的Paul Boddington评论)]]

您这样做了5次,这是固定的。因此,无论
N
(?),此代码将运行5次

Q:你认为这取决于
N

A:


顺序是O(1)。

它取决于运行时间,因为deleteCharAt()在这些问题中,
N
必须有某种意义。这里是什么?5个字符串中的字符总数?专用静态字符串deleteFirstChar(字符串s){return s.substring(1);}运行时间为20分钟。我只是checked@Doejo我认为您将
deleteCharAt()
deleteFirstChar()
混淆了。您看到的是
子字符串的旧版本。它以前是
O(1)
,但现在它的字符数是线性的,因为它复制数组。哦,是的!对于Java>=7,复制数组是一个
O(N)
操作。我一直犯这个错误!谢谢你,保尔·伯丁顿。我会编辑它。
private static String deleteFirstChar(String s) {
    return s.substring(1);
}