码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode686

时间:2018-10-01 18:24:04      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:abc   return   bsp   没有   complex   ted   返回   time   div   

/*
上来的想法是KMP的思想,但是具体不会KMP的实现,c++STL的string 中的find?但是要注意A的长度与B的长度的问题,首先A的长度要大于B的长度
分为三个阶段: 1. A比B的长度要短,这时A要不断增加。  2.  A 比 B 刚好长,      3,  A 比 B 刚好长的长度 + 1个A的长度, 这时能够保证在A的原始的串中能够索引完一遍B的长度,如果此时没有找到那么就要返回-1
cdab cdab
abcd-abcd 
abcd-abcd-abcd
time complexity ?
*/
class Solution {
public:
    int repeatedStringMatch(string A, string B) {
        int count = 0;
        string str;
        while (str.size() < B.size()){   // 使A达到刚好比B长的情况,记录此时的重复次数
            str.append(A);
            count++;
        }
        if (str.find(B) != -1){
            return count;
        }
        str.append(A);            // 再加一次A
        if (str.find(B) != -1){   // 保证A的所有的字符都能被B索引一次
            return ++count;
        }
        return -1;
    }
};

 

leetcode686

标签:abc   return   bsp   没有   complex   ted   返回   time   div   

原文地址:https://www.cnblogs.com/asenyang/p/9735213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!