leecode.1003.检查替换后的词是否有效

题目

检查替换后的词是否有效

思路分析

这道题就是遍历字符串,看是不是由abc,ab+c,a+bc组成的。
使用一个数组来储存遍历过程中的字符串。当当前数组长度大于三的时候,检查最后的字符串是否为abc。如果是的话,就消除最后三个,如果不是,继续入数组。(有点像消消乐的感觉)

注意点

当遍历完所有的字符之后,可能数组里面刚好剩余abc,但是因为退出循环了,因此此时没法消除。所以为了解决这个问题,我们家一个哨兵‘!’,如果当前字符串合法,那么最后处理完的数组应该长度是1.

代码

class Solution {
public:
    bool isValid(string s) {
        vector<char> arr;
        int tot = 0;
        s += '!';//哨兵
        for(auto c : s){
            if(tot >= 3){
                if(arr[tot -1] == 'c' && arr[tot - 2] == 'b' && arr[tot - 3] == 'a'){
                    for(int i = 0;i < 3;i++) arr.pop_back();
                    tot -= 3;
                } 
            }
            arr.push_back(c);
            tot++;
        }
        return tot == 1;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值