Given a string s containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘ and ‘]’, determine if the input string is valid.
給予指定的符號,確認是否有效。('()', '{}', '[]')
Example 1:
Input: s = "()" Output: true
Example 2:
Input: s = "()[]{}" Output: true
Example 2:
Input: s = "(]" Output: false
Solution:
1. 運用「for…of」將input進行迴圈,比對錯誤即回傳false
2. 當「if條件」符合左括號時,push()放入空陣列中
3. 當「if條件」出現右括號時,pop()比對上一次儲存的左括號
4. 最後當宣告的空陣列長度為0時,回傳ture
Code 1: BigO(n)
var isValid = function(s) { const array: string[] = [] const map: Record= { ")":"(", "]":"[", "}":"{" } for (let char of s) { if (char === "(" || char === "[" || char === "{") { array.push(char) } else if (array.pop() !== map[char]) { return false; } } return (array.length === 0) };
FlowChart:
Example 1
step.1 char = '(' array = [] => array = ['('] step.2 char = ')' array.pop = ['('] => map[char] = ['('] array.length === 0 => true
Example 2
step.1 char = '(' array = [] => array = ['('] step.2 char = ')' array.pop = ['('] => map[char] = ['('] step.3 char = '[' array = [] => array = ['['] step.4 char = ']' array.pop = ['['] => map[char] = [']'] step.5 char = '{' array = [] => array = ['['] step.6 char = '}' array.pop = ['{'] => map[char] = ['{'] array.length === 0 => true
Example 3
step.1 char = '(' array = [] => array = ['('] step.2 char = '}' array.pop = ['('] => map[char] = ['{'] return false
Code 2: BigO(n)
var isValid = function(s) { const array: string[] = [] for (i = 0; i < s.length; i++) { if (s[i] === '(') { array.push(')') } else if (s[i] === '{') { array.push('}') } else if (s[i] === '[') { array.push(']') } else if (array.pop() !== s[i]) { return false; } } return (array.length === 0); };