在使用两个指针的方法解决了Leetcode 392 Is Subsequence之后,我正在try 使用正则表达式来解决它.虽然这对较小的输入很有效,但当try 较大的输入时就会非常慢.
问题摘要
给定两个字符串s和t,如果s是t的子序列,则返回true,或者 否则为假.
字符串的子序列是由 通过删除一些字符(可以为None)来删除原始字符串 而不会干扰其余字符的相对位置. (即,"ace"是"abcde"的子序列,而"AEC"不是).
例1:
输入:S="abc",t="ahbgdc"输出:真示例2:
输入:S="axc",t="ahbgdc"输出:FALSE 约束条件:
0 = s.长度= 100 0 = t.长度= 10000 s和t仅由两个英文字母组成.
代码是这样的:
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isSubsequence = function (s, t) {
if (s.length > t.length) {
return false;
}
let regex_string = "\\w*";
for (let i = 0; i < s.length; i++) {
regex_string += s[i] + "\\w*";
}
const regex = new RegExp(regex_string);
return regex.test(t);
};
let s = "rjufvjafbxnbgriwgokdgqdqewn";
let t = "mjmqqjrmzkvhxlyruonekhhofpzzslupzojfuoztvzmmqvmlhgqxehojfowtrinbatjujaxekbcydldglkbxsqbbnrkhfdnpfbuaktupfftiljwpgglkjqunvithzlzpgikixqeuimmtbiskemplcvljqgvlzvnqxgedxqnznddkiujwhdefziydtquoudzxstpjjitmiimbjfgfjikkjycwgnpdxpeppsturjwkgnifinccvqzwlbmgpdaodzptyrjjkbqmgdrftfbwgimsmjpknuqtijrsnwvtytqqvookinzmkkkrkgwafohflvuedssukjgipgmypakhlckvizmqvycvbxhlljzejcaijqnfgobuhuiahtmxfzoplmmjfxtggwwxliplntkfuxjcnzcqsaagahbbneugiocexcfpszzomumfqpaiydssmihdoewahoswhlnpctjmkyufsvjlrflfiktndubnymenlmpyrhjxfdcq";
isSubsequence(s, t);
如何在仍然使用正则表达式的情况下提高上述代码的性能?