博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 686. Repeated String Match 题解
阅读量:6830 次
发布时间:2019-06-26

本文共 2014 字,大约阅读时间需要 6 分钟。

题目:

给定两个字符串 AB, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1

举个例子,A = "abcd"B = "cdabcdab"

答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。

注意:

AB 字符串的长度在1和10000区间范围内。

题解:

核心思想是不断重复A得到res,直到长度大于等于B。如果res包含B,则返回true,如果不包含,可以令res再加一次A,此时包含B则返回true,不包含则直接返回false

例如 A = "abcd"B = "cdabcdab"A重复两次后得到res = "abcdabcd",此时res不包含B,但res + A 后则包含B

C++
class Solution {
public: int repeatedStringMatch(string A, string B) { string res = A; int cnt = 1; while(res.size() < B.size()){ res += A; cnt++; } if(res.find(B) != string::npos) { return cnt; } res += A; if(res.find(B) != string::npos) { return cnt + 1; } return -1; }};复制代码
Java
class Solution {    public int repeatedStringMatch(String A, String B) {        int lB = B.length();        String res = A;        int cnt = 1;        while( res.length() < lB) {            res += A;            cnt++;        }        if(res.contains(B)) {            return cnt;        }        res += A;        if(res.contains(B)) {            return cnt + 1;        }        return -1;    }}复制代码
Python
class Solution(object):    def repeatedStringMatch(self, A, B):        """        :type A: str        :type B: str        :rtype: int        """        lenB = len(B)        res = A        cnt = 1        while(len(res) < lenB):            res += A            cnt += 1        if(res.find(B) != -1):            return cnt        res += A        if(res.find(B) != -1):            return cnt + 1        return -1复制代码
JavaScript
/** * @param {string} A * @param {string} B * @return {number} */var repeatedStringMatch = function(A, B) {    var lenB = B.length;    var res = A;    var cnt = 1;    while (res.length < lenB) {        res += A;        cnt++;    }    if(res.indexOf(B) != -1) {        return cnt;    }    res += A;    cnt++;    if(res.indexOf(B) != -1) {        return cnt;    }    return -1;};复制代码
参考资料

转载地址:http://cinkl.baihongyu.com/

你可能感兴趣的文章
mysql小数数据类型
查看>>
js判断input输入保留正整数和两位小数实现方法
查看>>
redisson学习示例
查看>>
升级到 PHP 7.0
查看>>
ITSM--IT服务管理注意细则
查看>>
JAVA中使用代码创建多数据源,并实现动态切换(一)
查看>>
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):
查看>>
Solr服务的搭建
查看>>
谈一谈SQL Server中的执行计划缓存(下)
查看>>
centos系统实现hadoop安装配置《二》
查看>>
linux JVM内存分析(二) 实战JVM调优
查看>>
(三)spring cloud微服务分布式云架构 - Spring Cloud集成项目简介
查看>>
scrapy爬虫时HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法
查看>>
随机漫步
查看>>
解决vue在ie中不能使用的问题
查看>>
如何使用 CSS Grid 快速而又灵活的布局
查看>>
scrolltop的兼容问题
查看>>
磁盘格式化,磁盘挂载,手动增加swap空间
查看>>
2.23/2.24/2.25 find命令
查看>>
Zabbix 通过 SNMP 监控设备
查看>>