1// 比较含有退格的字符串,"<-"代表退格键,"<"和"-"均为正常字符 2// 输入:"a<-b<-", "c<-d<-",结果:true,解释:都为"" 3// 输入:"<-<-ab<-", "<-<-<-<-a",结果:true,解释:都为"a" 4// 输入:"<-<ab<-c", "<<-<a<-<-c",结果:false,解释:"<ac" !== "c" 5 6function fn(str1, str2) { 7 8}
参考答案:
1function fn(str1, str2) { 2 3 const doDelete = (str) => { 4 let flag = 0;// 0 - 正常字符;1 - <;2 - <- 5 const stack = []; 6 for(let i = 0; i < str.length; i++) { 7 const char = str[i]; 8 stack.push(char); 9 10 if(char === '<' && !flag) { 11 flag += 1 12 } else if(flag === 1) { 13 if(char === '-') { 14 flag += 1 15 } else { 16 flag -= 1 17 } 18 } 19 20 if(flag === 2) { 21 stack.pop(); 22 stack.pop(); 23 stack.pop(); 24 flag = 0 25 } 26 } 27 // console.log(String(stack)) 28 return String(stack); 29 } 30 31 return doDelete(str1) === doDelete(str2); 32} 33 34console.log(fn("a<-b<-", "c<-d<-")) 35console.log(fn("<-<-ab<-", "<-<-<-<-a")) 36console.log(fn("<-<ab<-c", "<<-<a<-<-c"))
最近更新时间:2023-06-01