每日一题:实现方法fn,遇到退格字符就删除前面的字符,遇到俩个退格就删除俩个字符

每日一题

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

javascript 复制代码
// 比较含有退格的字符串,"<-"代表退格键,"<"和"-"均为正常字符 
// 输入:"a<-b<-", "c<-d<-",结果:true,解释:都为"" 
// 输入:"<-<-ab<-", "<-<-<-<-a",结果:true,解释:都为"a" 
// 输入:"<-<ab<-c", "<<-<a<-<-c",结果:false,解释:"<ac" !== "c" 
function fn(str1, str2) { }

思路一:

  • 在字符串中找到连续的 "<-" 字符,然后删除其前面的字符
  • 定义一个function专门来处理这样的字符串
  • 最后对比转换后的子串。
javascript 复制代码
function fn(str1,str2){
  let leftr = FromatStr(str1);
  let right = FromatStr(str2);
  return leftr == right;
}

function FromatStr(str){
  let arr = str.split('');
  for(let i=0;i<arr.length-1;i++){
    if(arr[i]=='<' && arr[i+1]=='-'){
      if(arr[i-1]){
        arr.splice(i-1,3,'');//添加''是防止索引塌陷
      }else{
        arr.splice(i,2,'');//添加''是防止索引塌陷
      }
    }
  }
  return arr.join('');

思路二:

  • 用一个临时数组来成就符合条件的字符
  • 碰到删除键就删除掉这个字符
  • 然后直接跳跃到下下个字符在判断
javascript 复制代码
function fn(str1,str2){
  let leftr = FromatStr(str1);
  let right = FromatStr(str2);
  return leftr == right;
}

function FromatStr(str){
  let arr = [];
  for(let i=0;i<str.length;i++){
    if(str[i]=='<' && str[i+1]=='-'){
      i++;//直接跳跃到下下个字符在判断
      arr.pop();
    }else{
      arr.push(str[i]);
    }
  }
  return arr.join('');
}


let result = fn("-a<-b<-","c<-d<-");
console.log(result);//false

思路三

  • 利用正则替换
相关推荐
Data analyse4566 分钟前
rrweb回放事件资源加载顺序重放校验
前端·人工智能·算法·机器学习·数据分析
软件技术NINI6 分钟前
化妆品html+css+js 7页
javascript·css·html
昨夜见军贴06169 分钟前
原始采样记录数字化落地,IACheck AI 报告文档审核 Agent 实现监测文档校验自动化
人工智能·算法·自动化
要吃这碗饭15 分钟前
JavaScript 网络爬虫教程(2026)
开发语言·javascript·爬虫
lexiangqicheng21 分钟前
自定义表单跨端共用机制-PC设计APP渲染
java·前端·javascript
微学AI24 分钟前
从历史曲线到提前预警:TimechoAI 的时序预测与业务落地实践
人工智能·算法
zhikouai24 分钟前
AI辅助逆向工程链路:从二进制接入到等价性校验
java·linux·前端
沙漏无语25 分钟前
pnpm 安装@vue-office包的幽灵依赖问题解决
前端·javascript·vue.js
霍格沃兹测试学院-小舟畅学31 分钟前
Playwright MCP:AI Agent 驱动 Web 自动化测试的架构与执行机制
前端·人工智能·架构
Jmyd012331 分钟前
VR全景线上展会制作流程技术解析:全景采集、点云重建与Web端渲染优化实战
前端·javascript·vr·三维数字化