Valid Parentheses 使用递归的解法

class Solution {
public:
    bool isValid(string s) {
        if(s.size()<2||s.size()%2!=0)return false;
        unordered_map<char,char>hashmap;
        hashmap['(']=')';
        hashmap['[']=']';
        hashmap['{']='}';
        if(s.size()==2)return hashmap[s[0]]==s[1];
       
        int i=1;
        int sum1=0,sum2=0;
        int j;
        while(i<s.size())
        {
            j=i-1;
             if(s[j]==s[0])++sum1;
             if(s[i]==hashmap[s[0]]){
                 ++sum2;
                 if(sum1==sum2){
                      if(i==s.size()-1)return isValid(s.substr(1,s.size()-2));
                      if(i==1)return isValid(s.substr(2,s.size()-2));
                      return isValid(s.substr(1,i-1))&&isValid(s.substr(i+1,s.size()-1-i));
                 }
                 
             }
            
             
             
            i=i+2;
        }
        return false;
      
    }
};

 

posted on 2016-04-13 09:44  Seven_noon  阅读(300)  评论(0编辑  收藏  举报