【題目描述】
給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
【示例】
示例 1:
輸入: "()"
輸出: true
示例 2:
輸入: "(){}"
輸出: true
示例 3:
輸入: "(]"
輸出: false
示例 4:
輸入: "([)]"
輸出: false
示例 5:
輸入: ""
輸出: true
【思路】
之前上資料結構的課時有講過相關思路:
1.用棧,從左至右掃瞄乙個表示式,如果遇到左括號就入棧,如果遇到右括號就出棧。假如這個出棧操作不能成功(此時棧空),就直接判斷為括號不匹配。
2.如果可以出棧,就檢測剛才掃瞄到的括號和剛出棧的括號,如果兩者恰好匹配,則繼續掃瞄;否則就直接判斷為括號不匹配。
3.一直進行下去,直到整個表示式都掃瞄完畢。如果此時棧中還有括號,就說明表示式中的括號不匹配。
4.如果此時恰好棧空,那麼就說明此時表示式中的括號時匹配的。
5.有乙個很重要的步驟反覆出現:比較當前選出的兩個括號(其中乙個出棧而來,而另乙個是當前掃瞄到的)來判斷它們是否匹配。
【我的答案】
#define maxsize 1000000
int ismatched(char left,char right)')
return 1;
else
return 0;
}bool isvalid(char exp)
')
}if(top > -1)//看棧是否為空
return 0;
return 1;
}
之前沒有定義maxsize的值,後來又定義值為1000
報錯:line 20: char 14: runtime error: index 1000 out of bounds for type 『char [1000]』 (solution.c)
發現執行用例嗷嗷長,於是在1000後面又多加了不知道多少個0
LeetCode20有效括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
Leetcode 20 有效括號
leetcode 20 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true pthon 列表 如 a a b 字典 如 dict not ...
leetcode 20 有效括號
怎麼減少if語句,判斷是否是某乙個值,將值存進map中,是否在map中,若在,則是 匹配用map 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出...