leetcode844

*/

bool backspaceCompare(string s, string t) {

stack s1,s2;

for(char str:s){

if(str != ‘#’){

s1.push(str);

}else if(!s1.empty()){

s1.pop();

}

}

for(char str:t){

if(str != ‘#’){

s2.push(str);

}else if(!s2.empty()){

s2.pop();

}

}

return s1 == s2;

}

};

(3):方法二

class Solution {

public:

/**

思路:

1.利用栈 我们将字符串中的单个元素都入栈 当遇到’#'的时候将将栈顶元素弹出

*/

bool backspaceCompare(string s, string t) {

return text(s) == text(t);

}

string text (string str){

string s;

for(int i = 0; i < str.size(); i++){

if(str[i] != ‘#’)

s.push_back(str[i]);

else if(!s.empty())

s.pop_back();

}

return s;

}

};

2:双指针


(1):思路

1.我们在遇到’#‘的时候 是删除其前面的元素,而与后面的元素无关,那么我们可以逆序遍历

字符串,当遇到’#‘的时候,指针就往前走,然后当kipNum为0的时候证明我们已经成功移 除一个字符(其实是模拟)

2.这里设置skipNum,tkipNUm两个变量,来记录两个字符串中的’#‘的数量,来模拟消除的过程

那么在这里双指针主要是用在来比较单个字符,就是我们遍历到最后,我们是否可以得到相同

的字符,或者是同时遍历完成,那么也会说明去除’#'前面的字符后的字符串依然相等

(2):上码

class Solution {

public:

/**

思路:

1.我们在遇到’#'的时候 是删除其前面的元素,而与后面的元素无关,那么我们可以逆序遍历

字符串,当遇到’#'的时候,指针就往前走,然后当kipNum为0的时候证明我们已经成功移 除一个字符(其实是模拟)

2.这里设置skipNum,tkipNUm两个变量,来记录两个字符串中的’#'的数量,来模拟消除的过程

那么在这里双指针主要是用在来比较单个字符,就是我们遍历到最后,我们是否可以得到相同

的字符,或者是同时遍历完成,那么也会说明去除’#'前面的字符后的字符串依然相等

*/

bool backspaceCompare(string s, string t) {

int sKipNum = 0;//记录s中’#‘的数量 主要是为了模拟去除’#'前面的字符

int tkipNum = 0;//记录t中’#'的数量

//双指针

int i = s.size() - 1;//逆序

int j = t.size() - 1;

while(1){

//从后往前,消除s中的#

while(i >= 0){

if(s[i] == ‘#’)//当遇到#的时候这个while循环就有意义了,直到skipnum == 0的时候才跳出这个循环,表示模拟删除了 # 前面的字符

sKipNum++;

else{

if(sKipNum > 0)

sKipNum–;

else

break;

}

i–;//往前走一个字符

}

while(j >= 0){

if(t[j] == ‘#’)

tkipNum++;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值