密码验证:检测是否存在连续递增数字序列的实现需求
判断数字字符串是否为连续递增序列
需求:给定纯数字字符串,若整个字符串是相邻数字依次递增1的连续序列则返回true,否则返回false。对应示例:
"113489"→false(存在重复数字,不符合连续递增)"123456"→true(全程连续递增)"189033"→false(后续数字中断递增,且存在重复)
方法一:遍历检查法
这是最直观的实现方式,逐个验证相邻数字的关系:
function isConsecutiveIncreasing(str) { // 长度不足2的字符串无法形成连续递增序列 if (str.length < 2) return false; for (let i = 0; i < str.length - 1; i++) { const currentNum = parseInt(str[i], 10); const nextNum = parseInt(str[i+1], 10); // 只要有一对不满足后数=前数+1,直接返回false if (nextNum !== currentNum + 1) { return false; } } // 所有相邻对都符合要求 return true; } // 测试用例 console.log(isConsecutiveIncreasing("113489")); // false console.log(isConsecutiveIncreasing("123456")); // true console.log(isConsecutiveIncreasing("189033")); // false
优点:
- 逻辑简单易懂,调试方便
- 提前终止:一旦发现不符合的情况立刻返回,无需遍历整个字符串
方法二:正则表达式法
通过预定义所有合法的递增数字对,用正则匹配整个字符串是否完全由这些对组成:
function isConsecutiveIncreasing(str) { // 匹配所有合法的连续递增数字对,且覆盖整个字符串 const consecutiveRegex = /^(01|12|23|34|45|56|67|78|89)+$/; return consecutiveRegex.test(str); } // 测试用例 console.log(isConsecutiveIncreasing("113489")); // false console.log(isConsecutiveIncreasing("123456")); // true console.log(isConsecutiveIncreasing("189033")); // false
优点:
- 代码简洁,一行核心逻辑就能完成判断
- 无需手动遍历,利用正则引擎完成匹配
内容的提问来源于stack exchange,提问作者GuilhermeSO
相关产品推荐
相关产品推荐

