유효한 괄호
5645 단어 leetcodeeasycsharpalgorithms
문제 설명
s
, '('
, ')'
, '{'
, '}'
및 '['
문자만 포함하는 문자열 ']'
가 주어지면 입력 문자열이 유효한지 확인합니다.다음과 같은 경우 입력 문자열이 유효합니다.
예 1
Input: s = "()"
Output: true
예 2
Input: s = "()[]{}"
Output: true
예 3
Input: s = "(]"
Output: false
설명
給定一個字串其內容僅有
(
、 )
、 [
、 ]
、 {
、 }
六種括號來組成,其括號號使用虉使用處使用的相同,例如 (
僅能以 )
關閉,請確認字串是否為有效해결책
一開始先將奇數長度的字串排除,因為括號為倆倆一組,不會有單一括號存在.
建立 建立 個 一 來 來 裝載 後續 迴圈 迴圈 內 內 判斷 出 的 右括號 右括號 右括號 右括號 右括號 右括號 右括號 右括號 一 一 迴 迴 圈 迭代字串內 所有 字符 字符 字符 字符 在 次 次 迭代 迭代 中 中 中 中 中 中 中 中 中 字符 是否 是否 為 任 括號 括號 如果 是 是 是 是 是 則 則 在 堆疊 堆疊 中存 中存 中存 中存 中存入對應的右括號; 如果當前符號為右括號,將堆疊最上方的元素推出,比較兩者是否一樣,若一樣繼續下次迴圈,否則6 6
에서最後一個
false
中除了上述的判斷之外,如果迴圈尚未結束,但堆疊內已經沒有任何元素,表示已經沒有對應拴號,有尔應括號 9 表示已經沒有對應拴號6迴圈結束後,如果堆疊內還有元素存在,也表示沒有相對應的括號,故最後直接返回堆疊內數量是否等於零判斷的
public bool IsValid(string s)
{
if (s.Length % 2 != 0) return false;
Stack<char> stack = new Stack<char>();
for (int i = 0; i < s.Length; i++)
{
if (s[i] == '(')
stack.Push(')');
else if (s[i] == '[')
stack.Push(']');
else if (s[i] == '{')
stack.Push('}');
else if (stack.Count == 0 || s[i] != stack.Pop())
return false;
}
return stack.Count == 0;
}
참조
LeetCode Solution
GitHub Repository
글 읽어주셔서 감사합니다 🌷 🌻 🌼
마음에 드셨다면 주저말고 하트 꾸욱 눌러주세요❤️
또는 내 Leetcode 솔루션에서 좋아요를 클릭하세요.
또는 내 GitHub ⭐ 팔로우
또는 커피를 사주세요 ⬇️ 감사합니다.
Reference
이 문제에 관하여(유효한 괄호), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fakestandard/valid-parentheses-2p3i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)