给定一个序列和键,创建一个函数来查找序列中的字符是否按键的顺序出现

时间:2019-01-16 18:45:18

标签: javascript

给两个字符串一个序列字符串和一个键字符串。创建一个功能 确定键的字符是否在顺序字符串中按顺序出现。 “ arcata”和“ cat”或“ c1a2t3”和“ cat”将返回true,而“ cta”将返回false

创建了一个嵌套循环以创建新的str,然后将新的str与键进行比较。

function sequenceSearch(sequence, key) {
  var str = "";
  for (var i = 0; i < key.length; i++) {
    var keyChar = key[i]
    for (var j = 0; j < sequence.length; j++) {
      var char = sequence[j];
      if (char === keyChar) {
        if (str.indexOf(char) === -1) {
          str += char;
        }
      } 
    }
  }
  return str === key;
}

“ c1a2t3”和“ cat”应为true,但我为false; “ cta”,“ cat”应该为假,但我为真

3 个答案:

答案 0 :(得分:1)

通过将键转换为正则表达式,然后检查序列是否匹配,可以很容易地做到这一点:

var key = "cat"; // or whatever
var sequence = "c1a2t3"; // or whatever
var r = ".*" + key.split("").join(".*") + ".*"; // makes string representation of regex of .*c.*a.*t.*
var valid = sequence.match(r);

答案 1 :(得分:0)

没有正则表达式或foreach使用减少

onPizzasChange(event: MatSelectionListChange) {
    console.log("selectedOptions:", event.source.selectedOptions.selected();
};

为键中的每个字母拆分序列。

在字母之前先去除序列字母。

继续减少剩余序列

如果最后一个字母可以分割序列,我们将进行匹配并返回结果:true;

答案 2 :(得分:0)

这看起来很像Levenshtein distance算法实现的一部分。您应该寻找那个javascript implementation