給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: 「()」示例 2:輸出: true
輸入: 「(){}」示例 3:輸出: true
輸入: 「(]」示例 4:輸出: false
輸入: 「([)]」示例 5:輸出: false
輸入: 「」用乙個棧來存字串,"(","[",""出棧,出棧時檢查一下括號型別是否匹配,如果程式結束,棧為空,說明匹配成功,奇數長度肯定是錯誤的,開始時判斷一下。輸出: true
**實現:
public
boolean
isvalid
(string s)
stack
stack =
newstack
<
>()
;try
}catch
(exception e)
if(stack.
empty()
)else
}private
void
judgeaction
(stack
stack,character c)
throws exception
else
;break
;case
']':
if(stack.
peek()
=='['
)else
;break
;case
'}':
if(stack.
peek()
=='else
;break;}
}
提交後發現執行了11ms,平均水平的11%,所以肯定是存在問題的。
我的**使用了switch來判斷出現的括號,好像有些麻煩了,使用map,將3種型別的括號對應起來,好像**會非常的簡潔。
private hashmap
public
solution()
','public
boolean
isvalid
(string s)
}else
}// if the stack still contains elements, then it is an invalid expression.
return stack.
isempty()
;}實際執行下來8ms,平均值的33%。
public
boolean
isvalid
(string s)")
)",""
);}if
(s.length()
==0)else
}
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 輸入 輸出...