我比较两个字母的索引得到错误的结果

I receive false result comparing indices of two letters

本文关键字:索引 结果 错误 比较 两个      更新时间:2023-09-26

我写了一个方法,它接受一个字符串,如果字母"z"出现在和"a"之后的三个字母中,则返回true。您可以假设字符串只包含小写字母。

function nearBy_az(string) {
    var i
    var j
    len = string.length
    for (i = 0; i < len; i++) {
        for (j = i + 1; j < len; j++) {
            if (string[i] === "a" && string[j] === "z" && j - i <= 3) {
                return true
            } else {
                return false
            }
        }
    }
}

如果您可以使用正则表达式,则只需使用正则表达式即可。你可以这样做。

var strCondition = new RegExp(/(.*?|^)a[a-z]{0,2}z/);
var string = "az";
console.log(strCondition.test(string));
string = "adz";
console.log(strCondition.test(string));
string = "abcz";
console.log(strCondition.test(string));
string = "abcdz";
console.log(strCondition.test(string));
string = "abcdez";
console.log(strCondition.test(string));

//var inputString = "abz";
function verifyString(inputString) {
  var exist = false;
  debugger;
  for (var idx = 0; idx < inputString.length; idx++) {
    if (inputString.charAt(idx) === 'a') {
      var subStr = inputString.substr(idx, 4);
      if (subStr.indexOf('z') !== -1) {
        exist = true;
      }
    }
  }
  return exist;
}
var inputString = "az";
console.log(verifyString(inputString));
inputString = "adz";
console.log(verifyString(inputString));
inputString = "abcz";
console.log(verifyString(inputString));
inputString = "abcdz";
console.log(verifyString(inputString));
inputString = "abcdez";
console.log(verifyString(inputString));