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/ 拥抱变化,时刻斗争,走出舒适圈。
  • 相关阅读:
    第十二周作业
    十一周作业
    第十周作业
    第九周作业
    2019年春第八周作业
    第五周课程总结&实验报告(三)
    第四周课程总结&实验报告(二)
    第三周课程总结&实验报告(一)
    第二周课程总结
    2019春总结作业
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12354828.html
Copyright © 2011-2022 走看看