Skip to content

请按以下要求实现方法 fn :遇到退格字符就删除前面的字符,遇到两个退格就删除两个字符

Posted on:2023年6月1日 at 09:27
// 比较含有退格的字符串,"<-"代表退格键,"<"和"-"均为正常字符
// 输入:"a<-b<-", "c<-d<-",结果:true,解释:都为""
// 输入:"<-<-ab<-", "<-<-<-<-a",结果:true,解释:都为"a"
// 输入:"<-<ab<-c", "<<-<a<-<-c",结果:false,解释:"<ac" !== "c"

function fn(str1, str2) {}

function fn(str1, str2) {
  const doDelete = (str) => {
    let flag = 0; // 0 - 正常字符;1 - <;2 - <-
    const stack = [];
    for (let i = 0; i < str.length; i++) {
      const char = str[i];
      stack.push(char);

      if (char === "<" && !flag) {
        flag += 1;
      } else if (flag === 1) {
        if (char === "-") {
          flag += 1;
        } else {
          flag -= 1;
        }
      }

      if (flag === 2) {
        stack.pop();
        stack.pop();
        stack.pop();
        flag = 0;
      }
    }
    // console.log(String(stack))
    return String(stack);
  };

  return doDelete(str1) === doDelete(str2);
}

console.log(fn("a<-b<-", "c<-d<-"));
console.log(fn("<-<-ab<-", "<-<-<-<-a"));
console.log(fn("<-<ab<-c", "<<-<a<-<-c"));
原文转自:https://fe.ecool.fun/topic/00499f71-c1c2-46aa-9e87-d3ae7b79f268