zoukankan      html  css  js  c++  java
  • Leetcode 686 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.

    /*
    上来的想法是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; } };
  • 相关阅读:
    CentOS 7 将 python版本升级为3.x后产生的各种问题
    CentOS 7.0 Firewall防火墙配置
    CentOS7.2+Python3x+Flask部署标准化配置流程
    CentOS 7 下安装 Nginx
    CentOS7下安装python-pip
    CentOS 7 安装字体
    centos中文目录换成英文目录
    搭建typecho个人博客和主题优化
    迭代器与生成器
    装饰器函数
  • 原文地址:https://www.cnblogs.com/simplepaul/p/7717970.html
Copyright © 2011-2022 走看看