C++——删除字符串中的所有相邻重复项(简单题)

  • Post author:
  • Post category:其他



由于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 版权协议,转载请附上原文出处链接和本声明。