给两个字符串一个序列字符串和一个键字符串。创建一个功能 确定键的字符是否在顺序字符串中按顺序出现。 “ 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”应该为假,但我为真
答案 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。