You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript实现checkString函数判断字符串是否由指定子串重复构成

JavaScript实现checkString子串重复拼接校验函数

核心逻辑

要判断目标字符串是否完全由指定子串重复拼接构成,只需要满足3个核心判断条件:

  • 子串不能为空,且目标字符串长度不能小于子串长度
  • 目标字符串长度必须是子串长度的整数倍(重复拼接不存在截断,长度必然是整数倍关系)
  • 按重复次数拼接子串,得到的结果和目标字符串完全一致

代码实现

ES6简洁版

直接用字符串原生repeat方法生成重复串做比对,代码简洁易读,适合现代浏览器/Node.js环境:

function checkString(str, substr) {
  if (!substr.length || str.length < substr.length) return false;
  if (str.length === substr.length) return str === substr;
  if (str.length % substr.length !== 0) return false;
  return substr.repeat(str.length / substr.length) === str;
}

兼容旧环境版

不依赖ES6 API,通过逐位字符比对实现,兼容性更好,大字符串场景下内存占用更低:

function checkString(str, substr) {
  var subLen = substr.length;
  var strLen = str.length;
  if (subLen === 0 || strLen < subLen) return false;
  if (strLen === subLen) return str === substr;
  if (strLen % subLen !== 0) return false;

  for (var i = 0; i < strLen; i++) {
    if (str[i] !== substr[i % subLen]) return false;
  }
  return true;
}

示例校验

对给出的标准测试用例,运行结果完全符合预期:

  • checkString("abc", "abc") -> true(单次子串刚好匹配)
  • checkString("abcabcabc", "abc") -> true(子串重复3次完全匹配)
  • checkString("abcdef", "abc") -> false(重复2次为abcabc,和目标串不一致)

注:给出的第四个示例存在语法笔误(子串参数漏写闭合引号),且按需求描述的「完全由子串重复拼接」规则,长度为5的abcab不可能由长度为3的abc整数次拼接得到,属于输入错误,可根据实际业务场景调整判断规则。

内容的提问来源于stack exchange,提问作者bjeelaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:57:08