每日一题——LeetCode844

方法一 暴力法:

对两个字符串分别从头到尾遍历一遍,遇到#就删除#和它之前的那个字符,如果遇到#在字符串的第一位则只用删除#,最后将删除后的不含#的两个字符串进行比较是否一样

var backspaceCompare = function(s, t) {for(var i=0;i<s.length;i++){if(s[i]==='#'){if(i===0){s=s.slice(1);i--;}else{s=s.slice(0,i-1)+s.slice(i+1);i-=2 ;}}}for(var i=0;i<t.length;i++){if(t[i]==='#'){if(i===0){t=t.slice(1);i--;}else{t=t.slice(0,i-1)+t.slice(i+1);i-=2;}}}return s===t;
};

消耗时间和内存:

方法二 双指针法:

两个指针分别指向s和t的尾部,从尾部开始每一位进行比较, 碰到#时用skip++代表要跳过一位进行比较,变相相当于删除了#之前那一个字符。若对比过程出现 S, T 当前字符不匹配,则遍历结束,返回 false,若 S,T 都遍历结束,且都能一一匹配,则返回 true。

var backspaceCompare = function(S, T) {let i = S.length - 1,j = T.length - 1,skipS = 0,skipT = 0;while(i >= 0 || j >= 0){while(i >= 0){if(S[i] === '#'){skipS++;i--;}else if(skipS > 0){skipS--;i--;}else break;}while(j >= 0){if(T[j] === '#'){skipT++;j--;}else if(skipT > 0){skipT--;j--;}else break;}if(S[i] !== T[j]) return false;i--;j--;}return true;
}

消耗时间和内存: 

 

方法三 栈:

和方法一类似,从前往后遍历,遇到字符先push进数组,遇到#就把数组最后一个元素移出,最后把两个数组转为字符串比较是否相同

var backspaceCompare = function(S, T) {var a=[],b=[]for(var i=0;i<S.length;i++){if(S[i]==='#'){a.pop()}else{a.push(S[i])}}for(var i=0;i<T.length;i++){if(T[i]==='#'){b.pop()}else{b.push(T[i])}}return a.join('')===b.join('')
}

消耗时间和内存: 

总体来说,三种方法耗时差不多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293031.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Python Advanced Programming + Design Patterns + Clean Code》

清洁代码 — 学习如何编写可读、可理解且可维护的代码 高级Python编程知识 Python之常用设计模式 Advanced Programming装饰器 decorators生成器 & 迭代器with 上下文管理器面向对象Mixin 模式反射机制并发编程 Design Patterns设计模式分类简单工厂模式工厂模式 √抽象工厂…

用C#也能做机器学习?

前言✨ 说到机器学习&#xff0c;大家可能都不陌生&#xff0c;但是用C#来做机器学习&#xff0c;可能很多人还第一次听说。其实在C#中基于ML.NET也是可以做机器学习的&#xff0c;这种方式比较适合.NET程序员在项目中集成机器学习模型&#xff0c;不太适合专门学习机器学习&a…

GNSS技术在城市规划中的革新:精准定位引领智慧城市发展

随着城市化的快速推进&#xff0c;城市规划愈发关键&#xff0c;而全球导航卫星系统&#xff08;GNSS&#xff09;技术的广泛应用正为城市规划带来一场前所未有的变革。本文将深入探讨GNSS模块在城市规划中的多重应用&#xff0c;以及如何通过精准定位推动智慧城市的发展。 城市…

【Python小知识 - 6】:QLabel设置图片

文章目录 QLabel设置图片 QLabel设置图片 from PyQt5.QtWidgets import * from PyQt5.QtGui import * import sysapp QApplication(sys.argv)window QWidget()hbox QHBoxLayout(window)# 设置标签图片 lable QLabel() lable.setPixmap(QPixmap(./img/window.png).scaled(1…

【ARM Cortex-M 系列 5 -- RT-Thread renesas/ra4m2-eco 移植编译篇】

文章目录 RT-Thread 移植编译篇编译os.environ 使用示例os.putenv使用示例python from 后指定路径 编译问题_POSIX_C_SOURCE 介绍编译结果 RT-Thread 移植编译篇 本文以瑞萨的ra4m2-eco 为例介绍如何下载rt-thread 及编译的设置。 RT-Thread 代码下载&#xff1a; git clone …

听GPT 讲Rust源代码--src/tools(22)

File: rust/src/tools/tidy/src/lib.rs rust/src/tools/tidy/src/lib.rs是Rust编译器源代码中tidy工具的实现文件之一。tidy工具是Rust项目中的一项静态检查工具&#xff0c;用于确保代码质量和一致性。 tidy工具主要有以下几个作用&#xff1a; 格式化代码&#xff1a;tidy工具…

12.21_黑马数据结构与算法笔记Java

//最近在复习&#xff0c;&#xff0c;java的进度会比较慢一些 目录 219 排序算法 基数排序2 220 排序算法 java排序 221 排序 e01 根据另一个数组次序排序 222 排序 e02 根据出现频率排序 thinking&#xff1a;关于比较器 223 排序 e03 最大间距 解法1&#xff08;超出内…

【图神经网络 · 科研笔记5】异构信息网络,利用注意力选择元路径;利用进化邻域和社群实现自监督动态图嵌入,交叉监督对比学习;近期科研思维导图小汇总;

记录部分科研文献阅读相关内容【划重点】,主题“图神经网络”,仅学习使用。 🎯作者主页: 追光者♂🔥 🌸个人简介: 📝[1] CSDN 博客专家📝 🏆[2] 人工智能领域优质创作者🏆 🌟[3] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌿[4] 2022年度…

ACM32G1x3有那些优势?适用于那些产品上?

ACM32G1x3优势 • 320KB 程序Flash64KB SRAM&#xff0c;跑RTOS程序开发更加方便 • 从外挂Flash通过DMA搬运图片数据到PSRAM&#xff0c;无需打断程序运行 • 120MHz M33内核&#xff0c;处理性能佳 • 集成2路CAN接口&#xff0c;适合工控等需要CAN接口的场景 • QS…

SpringSecurity深度解析与实践(2)

目录 引言1.Springboot结合SpringSecurity用户认证流程1.1 配置pom文件1.2.配置application.yml 2.自定义MD5加密3.BCryptPasswordEncoder密码编码器4.RememberMe记住我的实现5.CSRF防御5.1.什么是CSRF 引言 上篇网址 1.Springboot结合SpringSecurity用户认证流程 1.1 配置p…

在x64上构建智能家居(home assistant)(二)(新版Debain12)连接Postgresql数据库

新版数据库安装基本和旧版相同,大部分可以参考旧版本在x64上构建智能家居(home assistant)&#xff08;二&#xff09;连接Postgresql数据库_homeassist 数据库-CSDN博客 新版本的home assistant系统安装,我在原来写的手顺上直接修改了,需要的可以查看在x64上构建智能家居(home…