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

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

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.

 

M1: brute force

keep string builder and appending until the length A is greater or equal to B

B要能成为A的字符串,那么A的长度肯定要大于等于B,所以当A的长度小于B的时候,先重复A,直到A的长度大于等于B,并且累计次数cnt。此时找B是否存在A中,如果存在直接返回cnt。如果不存在,加上一个A再找(这样可以处理这种情况A="abc", B="cab")如果此时还找不到,说明无法匹配,返回-1。

时间:O(M+N),空间:O(max(M, N))

class Solution {    public int repeatedStringMatch(String A, String B) {        StringBuilder sb = new StringBuilder();        sb.append(A);        int cnt = 1;        while(sb.length() < B.length()) {            sb.append(A);            cnt++;        }        if(sb.toString().contains(B))            return cnt;        else if(sb.append(A).toString().contains(B))            return cnt+1;        else            return -1;    }}

 

M2: KMP

时间:O(N)

转载于:https://www.cnblogs.com/fatttcat/p/10049477.html

你可能感兴趣的文章
hdu 1221 Rectangle and Circle
查看>>
Android 四大组件之四(ContentProvider)
查看>>
Android 四大组件之一(Activity)
查看>>
扫描(一)
查看>>
BootStrap 智能表单系列 四 表单布局介绍
查看>>
mysql 三大范式【转载】
查看>>
MySQLDump在使用之前一定要想到的事情 [转载]
查看>>
Dapper优秀资料
查看>>
编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言的区别
查看>>
PIE SDK矢量数据的读取
查看>>
win10安装tomcat9
查看>>
廖雪峰Python3 学习笔记--编码
查看>>
两种方式分别改变alertdialog的宽和高
查看>>
TextView-setCompondDrawables用法
查看>>
由扭结理论中的琼斯多项式的证明想到的
查看>>
淘宝Hadoop集群的概况
查看>>
webservice接口读取xml文件内容
查看>>
Centos7安装rabbitmq server 3.6.0
查看>>
关于eclipse的ADT(插件)对xml的android:text属性检查修改
查看>>
linux生成自验证ssl证书的具体命令和步骤
查看>>