上篇文章:【Linux进程间通信】硬核剖析:消息队列、信号量、内核IPC资源统一管理与mmap加餐
目录
1.删除字符串中的所有相邻重复项
https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/description/
理解题意

删除两个相邻的重复项字母,保证最终答案唯一。
算法原理
本题更像是消消乐一样,每次消去相同字母。也就类似于将字符串放入一个栈中,只要字母入栈后有相同的就出栈,知道最终剩余唯一字母,再将其全部出栈再翻转即可,如下图:

而本题的栈也可以直接使用数组模拟这个栈结构,好处就是模拟完毕后,数组里面存的就是最终结果。
代码
cpp
class Solution {
public:
string removeDuplicates(string s)
{
string ret;
for(auto ch : s)
{
if(ret.size() && ch == ret.back())
ret.pop_back();
else
ret += ch;
}
return ret;
}
};
2.比较含退格的字符串
https://leetcode.cn/problems/backspace-string-compare/description/
理解题意

算法原理
原理同上一题相同,自己再试着做一下吧
代码
cpp
class Solution {
public:
bool backspaceCompare(string s, string t) {
return changeStr(s) == changeStr(t);
}
string changeStr(string& s)
{
string ret;
for(char ch : s)
{
if(ch != '#')
ret += ch;
else
if(ret.size()) ret.pop_back();
}
return ret;
}
};
本章完。