题解 | #牛群的秘密通信#

牛群的秘密通信

https://www.nowcoder.com/practice/f0047999594d4cd39f85d7347c6941af

知识点

模拟,数据结构:栈

思路

我们将'[','(','{'称为左半边,剩下的为右半边,分别使用两个stack存储(记作a,b)。

遍历字符串s,将每一位都放入对应的栈中。若为左半边,则放入a中,若为右半边,则放入b中。

每当一位右半边放入b时,都匹配一下是否与a.top()相对,若相对则都弹出,否则说明不匹配,可以直接return false了。否则继续遍历s。只要过程中没有返回FALSE,最后一定可以返回TRUE

##代码c++

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return bool布尔型
     */
    bool is_valid_cow_communication(string s) {
        // write code here
        stack<char>a;
        stack<char>b;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
                a.push(s[i]);
            }


            else {
                if ((s[i] == ']' && a.top() == '[' ) || (s[i] == ')' && a.top() == '(') ||(s[i] == '}' && a.top() == '{')) {
                    a.pop();
                    //b.pop();
                } else return false;

            }


        }
        //cout<<s[i]<<endl;
        return true;
       

    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务