由于C++中std::string 类本身就提供了类似【入栈】和【出栈】的接口,因此我们直接将需要被返回的字符串作为栈即可。
我们将字符串中的字符逐个入栈时,判断当前字符是否与栈顶元素相同,相同则让栈顶元素出栈,并继续判断下一个字符,否则将当前字符入栈,直到遍历完字符串中的所有字符,当前栈内的元素就是最后需要的结果。具体代码如下:
class Solution {
public:
string removeDuplicates(string S) {
string sk;
for (char& ch : S) {
if (!sk.empty() && sk.back() == ch) {
sk.pop_back();
} else {
sk.push_back(ch);
}
}
return sk;
}
};
在这里我们需要注意到的地方是for循环中的内容for(char& ch:S)即遍历字符串S中的每一个字符ch表示,其中写成
char ch:S
或
char& ch:S
都可以满足题目,只是后者更快一些,他是对原字符进行比较,前者则需要复制S的副本,然后遍历字符比较,需要消耗一定的时间。
版权声明:本文为ldm_666原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。