1. 程式人生 > >Valid Parentheses (棧的符號匹配)

Valid Parentheses (棧的符號匹配)

很簡單的利用棧進行括號匹配的題目。
當是左邊的符號的時候,壓進棧中。發現是右邊的符號的時候,先判斷其是否為空,然後與棧頂元素比較,不等直接return false

注意一點就是 最後只有棧中為空的時候才返回true。

class Solution {
public:
    bool isValid(string s) {
        stack<char> sk;
        int len=s.length();
        for(int i=0;i<len;i++)
        {
        	if(s[i]=='['||s[i]=='{'||s[i]=='(')
        	sk.push(s[i]);
       	    else
       	    {
    	      if(s[i]==']')
			  {
			  	if(sk.empty())
			  	return false;
			  	else{
	  			 char OnTop=sk.top();
	  			 sk.pop();
	  			 if(OnTop!='[')
	  			 return false;
	  			} 	
			  }
			  
			  if(s[i]=='}')
			  {
			  	if(sk.empty())
			  	return false;
			  	else{
	  			 char OnTop=sk.top();
	  			 sk.pop();
	  			 if(OnTop!='{')
	  			 return false;
	  			} 	
			  }
			  if(s[i]==')')
			  {
			  	if(sk.empty())
			  	return false;
			  	else{
	  			 char OnTop=sk.top();
	  			 sk.pop();
	  			 if(OnTop!='(')
	  			 return false;
	  			} 	
			  }
			     	
 	        }
        }
        if(sk.empty())
        return true;
        else
        return false;
    }
};