1. 程式人生 > >Leetcode 686.重復疊加字符串匹配

Leetcode 686.重復疊加字符串匹配

urn etc ret repeat black uil 子串 疊加 mat

重復疊加字符串匹配

給定兩個字符串 A 和 B, 尋找重復疊加字符串A的最小次數,使得字符串B成為疊加後的字符串A的子串,如果不存在則返回 -1。

舉個例子,A = "abcd",B = "cdabcdab"。

答案為 3, 因為 A 重復疊加三遍後為 "abcdabcdabcd",此時 B 是其子串;A 重復疊加兩遍後為"abcdabcd",B 並不是其子串。

註意:

A 與 B 字符串的長度在1和10000區間範圍內。

思路

技術分享圖片

 1 class Solution{
 2     public int repeatedStringMatch(String A,String B){
3 int q=1; 4 StringBuilder S=new StringBuilder(A); 5 for(;S.length()<B.length();q++) S.append(A); 6 if(S.indexOf(B)>=0) return q; 7 if(S.append(A).indexOf(B)>=0) return q+1; 8 return -1; 9 } 10 }

技術分享圖片

Leetcode 686.重復疊加字符串匹配