簡體   English   中英

如何確定旋轉字符串算法的時空復雜度

[英]How to determine the Time and Space complexity of rotate string algorithm

誰能解釋下面的旋轉字符串代碼段的時間和空間復雜度。

引用此示例的書說:

復雜度分析

時間復雜度:O(N ^ 2),其中N是A的長度。

空間復雜度:O(N),用於A + A的空間。

但是我不明白。 有人可以解釋嗎?

示例1:輸入:A ='abcde',B ='cdeab'輸出:true

示例2:輸入:A ='abcde',B ='abced'輸出:false

public class RotateString {
public static void main(String[] args) {
    System.out.println(rotateString("abcd","dabc"));
}
 public static boolean rotateString(String a, String b) {
       return a.length()==b.length() && (a+a).contains(b);
 }

}

空間復雜度為O(N),因為要添加兩個長度為N的字符串,這將創建一個新的長度為2 * N的字符串。 任何常數* N仍為O(N)。

由於contains()檢查所花費的時間,所以時間復雜度為N * N。 您正在檢查長度為2 * N的字符串是否包含另一個長度為N的字符串。要使用簡單的for循環執行此操作,您將必須在2 * N個位置中的每個位置開始檢查,看看接下來的N個字符是否與目標字符串N匹配。因此,比較次數將是2 * N乘以N = 2 * N ^ 2〜= O(N ^ 2)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM