题解 | #字符串通配符#
字符串通配符
https://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
const p = await readline();//?*Bc*?
const s = await readline();//abcd
let i = s.length-1,j = p.length-1;
const isMatch = (i,j) =>{
if(j < 0 || i < 0) return (j<0 ||j==0&&p.charAt(j)==="*")&& i<0;
const si = s.charAt(i),pj = p.charAt(j);
if(pj === "*" && /[0-9a-zA-Z]/.test(si)) return isMatch(i-1,j)||isMatch(i-1,j-1)||isMatch(i,j-1);//*匹配多个||匹配一个||匹配0个
return (pj === "?" &&/[0-9a-zA-Z]/.test(si) || si.toLowerCase()===pj.toLowerCase()) && isMatch(i-1,j-1);
}
console.log(isMatch(i,j));
}()
查看14道真题和解析