zoukankan      html  css  js  c++  java
  • 856. 括号的分数

    如果是(,就进栈,如果是),则不断出栈且将出栈的数相加,直到出现(,

    如果出栈的数相加后为0,则将1进栈,否则将sum * 2进栈

    [(]                # 遇到 ( 往栈添加
    [(, (]             # 继续添加
    [(, 1]             # 遇到 ) 合成一个1
    [(, 1, (]          # 遇到 ( 往栈添加
    [(, 1, (, (]       # 继续添加
    [(, 1, (, 1]       # 遇到 ) 合成一个1
    [(, 1, 2]          # 遇到 ) ,结构就是(1), 所以计算的话是 1 * 2
    [6]                # 遇到 ) ,结构是(1,2), 所以计算的话是 (1 + 2) * 2

    class Solution {
    public:
        stack<int> st;
        int scoreOfParentheses(string s) {
            int len = s.length();
            for(int i = 0; i < len; i++)
            {
                if(s[i] == '(') st.push(0);
                else
                {
                    int sum = 0;
                    while(st.top() != 0)
                    {
                        sum += st.top();
                        st.pop();
                    }
                    st.pop();
                    if(sum == 0)
                        st.push(1);
                    else
                        st.push(sum * 2);
                }
    
            }
            int ret = 0;
            while(!st.empty())
            {
                ret += st.top();
                st.pop();
            }
            return ret;
    
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    树上路径
    [HNOI2017]礼物
    Spoj 8372 Triple Sums
    [Swerc2014 C]Golf Bot
    【bzoj2194】快速傅立叶之二 FFT
    Linux下perl模块安装
    angularjs form表单验证
    Angularjs兼容IE
    input file限制上传文件类型
    angularjs判断页面数据是否渲染完成
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15489860.html
Copyright © 2011-2022 走看看