459. 重复的子字符串 JavaScript实现

108 阅读1分钟

459. 重复的子字符串

方法一

var repeatedSubstringPattern = function(s) {
    // 搜索a-z的所有组合,用于匹配字符串,但是效率很低
    // ^开头 $结尾 ()分组 \1则是代表与第一个小括号中要匹配的内容相同。
    return /^([a-z]+)\1+$/.test(s)
};

方法二

使用一个子串str去统计累加的字符串,遍历字符串的时候,使用s.repeat(count)检查字符串是否是由子串组成的。

var repeatedSubstringPattern = function(s) {
    // 设置子串
    let str = ""

    // 注意最后一个是不需要遍历的,即子串是包括本身串的
    for(let i=0; i<s.length-1; i++){
        // 累加子串,使用+
        str += s[i]

        // 检查s是否是由子串str构成
        if(s == str.repeat(Math.floor(s.length/str.length))){
            return true
        }
    }
    return false
};