• 686. 重复叠加字符串匹配『简单』


    题目来源于力扣(LeetCode

    一、题目

    686. 重复叠加字符串匹配

    题目相关标签:字符串

    注意:

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

    二、解题思路

    1. 通过对字符串 A 叠加 N 次使得新字符串中包含字符串 B,那么简单的思路就是循环对字符串 A 叠加,若新字符串中包含字符串 B,则返回叠加次数

    2. 但是需要注意的是,若字符串 A 为 "abc",字符串 B 为 "abcdabcd",那么字符串 A 叠加无数次也得不到包含字符串 B 的结果

    3. 增加限制条件,若叠加后的字符串长度大于字符串 A 与字符串 B 的长度后,仍不包含字符串 B 时,则返回 -1

    三、代码实现

    public static int repeatedStringMatch(String A, String B) {
        StringBuilder sb = new StringBuilder();
        sb.append(A);
        // 若 maxLen 长度的字符串中未包含字符串 B,则说明无法通过叠加字符串 A,使得新字符串包含 B
        int maxLen = A.length() + B.length();
        // 已 append 一次,所以 ans 初始为 1
        int ans = 1;
        // 循环叠加,使用 lastIndexOf 来代替 indexOf 更快速
        while (sb.lastIndexOf(B) == -1) {
            // 字符串长度超过 maxLen 时,说明无法通过叠加字符串 A,使得新字符串包含 B
            if (sb.length() > maxLen) {
                return -1;
            }
            sb.append(A);
            ans++;
        }
        return ans;
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        String A = "abcd", B = "cdabcdab";  // output: 3
        
        int result = repeatedStringMatch(A, B);
        System.out.println(result);
    }
    
  • 相关阅读:
    模块化
    ES6中的let
    ES6中的块级作用域
    Mobile 移动端
    H5离线缓存
    nginx 配置步骤
    虚拟路径的配置
    Apache和php的相关配置
    TCP/IP协议
    PHP中的文件操作
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13295320.html
Copyright © 2020-2023  润新知