莱州市住房和规划建设管理局网站,百度竞价培训,上海虹口建设局官方网站,wordpress payjs一:题目 二:思路代码
1:利用栈
(1):思路
1.利用栈 我们将字符串中的单个元素都入栈 当遇到’#的时候将将栈顶元素弹出
(2):上码#xff08;方法一#xff09;
class Solution {
public:/**思路:1.利用栈 我们将字符串中的单个元素都入栈 当遇到#的时候将将栈顶元素弹出*…一:题目 二:思路代码
1:利用栈
(1):思路
1.利用栈 我们将字符串中的单个元素都入栈 当遇到’#的时候将将栈顶元素弹出
(2):上码方法一
class Solution {
public:/**思路:1.利用栈 我们将字符串中的单个元素都入栈 当遇到#的时候将将栈顶元素弹出*/bool backspaceCompare(string s, string t) {stackchar 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.这里设置skipNumtkipNUm两个变量,来记录两个字符串中的’#‘的数量来模拟消除的过程 那么在这里双指针主要是用在来比较单个字符就是我们遍历到最后我们是否可以得到相同 的字符或者是同时遍历完成那么也会说明去除’#前面的字符后的字符串依然相等
(2)上码
class Solution {
public:/**思路:1.我们在遇到#的时候 是删除其前面的元素而与后面的元素无关那么我们可以逆序遍历字符串当遇到#的时候指针就往前走然后当kipNum为0的时候证明我们已经成功移 除一个字符其实是模拟2.这里设置skipNumtkipNUm两个变量,来记录两个字符串中的#的数量来模拟消除的过程那么在这里双指针主要是用在来比较单个字符就是我们遍历到最后我们是否可以得到相同的字符或者是同时遍历完成那么也会说明去除#前面的字符后的字符串依然相等*/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--;elsebreak;}i--;//往前走一个字符}while(j 0){if(t[j] #)tkipNum;else{if(tkipNum 0)tkipNum--;elsebreak; } j--;}//S或者T到头了,那么此时的 i 和 j 为 -1 因为我们是比较单个字符的 if(i 0 || j 0)break;//如果两个字符不相等则可以直接返回 trueif(s[i] ! t[j])return false; i--;//比如比较的第一个字符相等逆序j--;}if(i -1 j -1)return true;elsereturn false;}
};菜鸡杰又水了一道题 我以为我会双指针了 直到我遇到了这道题 梦醒了 晚安 晚安 加油陌生人