給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: 「()」
輸出: true
示例 2:
輸入: 「(){}」
輸出: true
示例 3:
輸入: 「(]」
輸出: false
示例 4:
輸入: 「([)]」
輸出: false
示例 5:
輸入: 「」
輸出: true
核心思路:用棧來解決問題。
方法一:遍歷字串 s ,按順序進棧,如果字元匹配了,則出棧,如果不匹配,則進棧。最後如果棧為空,則表示匹配成功。
方法二:遍歷字串 s ,如果是配對的左側(』(』、』[』、』}』)則讓相應的右側進棧,則棧裡面儲存的都是配對的右側字元,後面字串的所有右側字元必須和棧裡面的相等,即為配對成功。最後同樣判斷棧是否為空。
/**
* 20. 有效的括號
** @param s
* @return
*/public boolean isvalid(string s) ') || (sb.charat(index) == '[' && c == ']')))
index++;
}return sb.length() == 0;
}
/**
* 20. 有效的括號
** @param s
* @return
*/public boolean isvalid(string s) else if (c == '[') else if (c == '');
} else if (stack.isempty() || c != stack.pop())
}return stack.isempty();
}
力扣 20 有效的括號
題目 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例1 輸入 輸出 true 示例2 輸入 輸出 true 示例3 輸入 輸出 false 示例4 輸入 輸出 false 示例5 輸入 輸出 ...
力扣 20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
力扣 20 有效的括號
20.有效的括號 這是我刷了幾天題以來第一道標著 簡單 同時我也覺得還算簡單的題,蛋疼 class solution object defisvalid self,s type s str rtype bool stack 抄別人的,本來我是用if乙個個判斷的,好傻 for char in s 考慮...