leetcode (Repeated String Match)
阿新 • • 發佈:2018-12-23
Title:Repeated String Match 686
Difficulty:Easy
原題leetcode地址: https://leetcode.com/problems/repeated-string-match/
1. 見程式碼註釋
時間複雜度:O(n),一層一次for迴圈。
空間複雜度:O(1),沒有申請額外空間。
/** * 首先A拼接後的長度需要大於B的長度,有下面兩種情況: * 1、A=“abc”,B=“abcab” * 2、A=“bca”,B=“abcab” * @param A * @param B * @return */ public static int repeatedStringMatch(String A, String B) { int count = 1; String s = A; for (; s.length() < B.length(); count++) { s += A; } if (s.indexOf(B) >= 0) { return count; } if ((s + A).indexOf(B) >= 0) { return count + 1; } return -1; } /** * 同上述的方法大致一樣 * @param A * @param B * @return */ public static int repeatedStringMatch1(String A, String B) { StringBuilder sb = new StringBuilder(A); while (sb.length() <= B.length() + A.length()) { if (sb.indexOf(B) > -1) { return sb.length() / A.length(); } sb.append(A); } return sb.indexOf(B) > -1 ? sb.length() / A.length() : -1; }