LeetCode 20.有效的括號 Valid Parentheses
阿新 • • 發佈:2018-12-11
給定一個只包括‘(’,‘)’,‘[’,‘]’,‘{’,‘}’的字串,判斷字串是否有效。
思路1:
利用棧,是前一半括號的,入棧,是後一半括號的,判斷棧頂元素是不是和它相匹配,是則出棧;不是返回false。
遍歷完整個字串後,判斷棧是否為空,空則返回true;非空則返回false。
思路2:
和思路1一樣的思路,不利用棧了,只是換成在原字串上操作。
用一個變數,模擬棧頂指標。
程式碼如下:
class Solution { public: bool isValid(string s) { int i=-1,j=0;//i為模擬棧頂指標,初始化為-1,表示空棧 int len=s.length(); int arr[128]; arr['(']=1; arr['[']=2; arr['{']=3; arr[')']=-1; arr[']']=-2; arr['}']=-3; while(j<len) { if(arr[s[j]]>0) s[++i]=s[j];//i為模擬棧頂指標 else { if(i>=0&&arr[s[j]]+arr[s[i]]==0) { i--; } else return false; } j++; } if(i==-1) return true;//空棧 else return false; } };