zoukankan      html  css  js  c++  java
  • Leetcode686.Repeated String Match重复叠加字符串匹配

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

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

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

    注意:

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

    为什么(len2 / len1 + 2) * len1中要加2

    比如字符串A: "abcd"

    字符串B如果有答案

    无非有三种情况

    1.

    "abcd"   =   len2 / len1

    2.

    "..cd"(不等于A,相当于A的后缀) + "abcd" * n  =  len2 / len1 + 1

    "abcd" * n + "ab.."(不等于A,相当于A的前缀)   =  len2 / len1 + 1

    3.

    "..cd" + "abcd" * n + ".ab.." = len2 / len1 + 2

    class Solution {
    public:
        int repeatedStringMatch(string A, string B) {
            string temp = A;
            int cnt = 1;
            int len1 = A.size();
            int len2 = B.size();
            int boundary = (len2 / len1 + 2) * len1;
            for(int i = len1; i <= boundary; i += len1)
            {
                string:: size_type idx;
                idx = A.find(B);
                if(idx != string::npos)
                {
                    return cnt;
                }
                A += temp;
                cnt++;
            }
            return -1;
        }
    };
  • 相关阅读:
    Nginx分发服务
    apache+nginx 实现动静分离
    mysql 配置
    mysql 配置,还得多看看~
    Linux安装字体
    Oracle10g中阻塞锁查询更简单
    Access WMI via Python from Linux
    安装filezilla client报错libgnutls版本旧
    tomcat 服务形式检测
    JMX实现远程服务器Tomcat系统监控之三
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10434021.html
Copyright © 2011-2022 走看看