JS 简易实现 A是否为B 的子串 的判断函数(不借用原有api)

子串(定义):字符串中任意个连续的字符组成的子序列称为该串的子串。

复制代码
/**
 * 通过for循环判断A是否为B的子串
 * @param {String} comp - 被对比的字符串(B)
 * @returns {Boolean}
 */
String.prototype.isSubStrOf = function(comp) {
  const str = this.valueOf();

  if (typeof comp !== 'string') {
    if (!(comp instanceof String)) return false;
    comp = comp.valueOf();
  }
  if (str === comp || str === '') return true;

  const compLen = comp.length;
  const len = str.length;
  let index = 0;

  for (let i = 0; i < compLen; i++) {
    if (comp[i] === str[index]) {
      if (index === len - 1) return true;
      index++;
    } else {
      index > 0 ? index-- : (index = 0);
    }
  }

  return false;
}
复制代码

 

测试用例

const str = 'abc';
const subStrSet = ['a', 'b', 'c', 'ab', 'bc', 'abc', ''];

subStrSet.every(el => el.isSubStrOf(str)); // true

'ax'.isSubStrOf(str); // false

 

 

代码实现如有错误,还望指正

posted @   樊顺  阅读(302)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示