zoukankan      html  css  js  c++  java
  • 678 括号有效性

    给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:

    任何左括号 ( 必须有相应的右括号 )。
    任何右括号 ) 必须有相应的左括号 ( 。
    左括号 ( 必须在对应的右括号之前 )。
    * 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。
    一个空字符串也被视为有效字符串。

    思路:

    把(和各自入栈,然后先把视为(,遍历字符串中的),然后再讨论为)的情况,
    此时(的索引必须大于
    ,才能视为)

    class Solution {
        public boolean checkValidString(String s) {
            stack<int> left,star;
            for(int i=0;i<s.size();i++){
                if(s[i]=='(') left.push(i);
                else if(s[i]=='*') star.push(i);
                else {
                    if(left.empty() && star.empty()) return false;
                    if(!left.empty()) left.pop();
                    else 
                        star.pop();
                }
            }
            while(!left.empty()&&!star.empty()){
                if(left.top()>star.top)return false;
                left.pop();
                star.pop();
            }
            return left.empty();
        }
    }
    
    个人小站:http://jun10ng.work/ 拥抱变化,时刻斗争,走出舒适圈。
  • 相关阅读:
    模式识别 之 BP算法
    仪器开发 之 DICOM 三维重建 HPP
    模式识别 之 BP算法 (二)
    病理分析 之 细胞分析
    脉搏血氧仪 之 算法原理
    模式识别 之 初学
    机器学习 之 模糊神经(失败总结)
    冲刺第二天
    冲刺第三天
    团队项目计划
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12354828.html
Copyright © 2011-2022 走看看