https://leetcode.com/problems/repeated-string-match/
Given two strings A and B, find the minimum number of times A has to be repeated such that B is a substring of it. If no such solution, return -1.
For example, with A = "abcd" and B = "cdabcdab".
Return 3, because by repeating A three times (“abcdabcdabcd”), B is a substring of it; and B is not a substring of A repeated two times ("abcdabcd").
Note:
The length of A
and B
will be between 1 and 10000.
代码:
class Solution { public: int repeatedStringMatch(string A, string B) { int la = A.length(), lb = B.length(); map<char, int> mp; for(int i = 0; i < la; i ++) { if(mp[A[i]] == 0) mp[A[i]] ++; } for(int i = 0; i < lb; i ++) { if(mp[B[i]] == 0) return -1; } if(A.find(B) != -1) return 1; string c = A; for(int i = 1; i <= lb; i ++) { c += A; if(c.find(B) != -1) return i + 1; if(c.length() > B.length() * 3) return -1; } return 0; } };
又来?行吧行吧 bug 都是自己的锅 今天的 LeetCode 五题打卡
也许一会应该醒了