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;
    
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    刻意练习:从一般到卓越的方法
    Spring JMS 整合 ActiveMQ
    冒泡排序 快速排序
    TCP协议,UDP 协议的区别
    HashMap实现原理
    java 类加载过程
    Linux-vim命令(3)
    Linux-vim命令(2)
    Linux-vim命令(1)
    Linux-命令里的快捷键
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15489860.html
Copyright © 2011-2022 走看看