[leetcode] 중 복 된 하위 문자열 [javascript]

6217 단어 leetcode
https://leetcode-cn.com/problems/repeated-substring-pattern/
묘사 하 다.
빈 문자열 이 아 닌 문자열 을 지정 하여 하위 문자열 이 여러 번 반복 되 는 지 판단 합 니 다.주어진 문자열 은 소문 자 만 포함 하고 길 이 는 10000 을 넘 지 않 습 니 다.예시 1:
  : "abab"

  : True

  :        "ab"       。

예시 2:
  : "aba"

  : False

예시 3:
  : "abcabcabcabc"

  : True

  :        "abc"       。 (       "abcabc"       。)

분석 하 다.
하위 문자열 을 직접 순환 해서 찾 은 다음 내부 에서 다시 순환 합 니 다. 문자열 과 다 르 면 내부 순환 에서 벗 어 납 니 다.만약 튀 어 나 오지 않 았 다 면, 중 복 된 문자열 을 찾 았 다 는 것 이다.순환 이 끝나 지 않 으 면 false 로 돌아 갑 니 다.flag 를 사용 하여 상태 판단 을 진행 하 였 습 니 다.
/**
 * @param {string} s
 * @return {boolean}
 */
var repeatedSubstringPattern = function(s) {
  let len = s.length, count = 0
  if (len <= 1) {
    return false
  }
  while (len >> 1 > count) {
    count++
    if (len % count !== 0) {
      continue
    }
    let sample = s.slice(0, count), flag = true // flag      
    for (let i = 0;i < len / count; i++) {
      if (sample !== s.slice(i * count, (i + 1) * count)) {
        flag = false
        break
      }
    }
    if (flag) {
      return true
    } else {
      continue
    }
  }
  return false
};

leetcode 의 dalao 의 또 다른 해법
var repeatedSubstringPattern = function(s) {
  return (s + s).slice(1, -1).indexOf(s) >= 0
};

좋은 웹페이지 즐겨찾기