Đưa ra một chuỗi s
chỉ chứa các ký tự '['
, ']'
, '{'
,
Input: s = "[][]{}"
Output: true
0, Input: s = "[][]{}"
Output: true
1 và Input: s = "[][]{}"
Output: true
2, xác định xem chuỗi đầu vào có hợp lệ không.Một chuỗi đầu vào là hợp lệ nếu:
- Dấu ngoặc mở phải được đóng bởi cùng loại dấu ngoặc.
- Dấu ngoặc mở phải được đóng theo đúng thứ tự.
Kiểm tra nó ra: //leetcode.com/probols/valid-parentheses/
Ví dụ 1:
Input: s = "[]"
Output: true
Ví dụ 2:
Input: s = "[][]{}"
Output: true
Ví dụ 3:
Input: s = "[]"
Output: false
Ví dụ 4:
Input: s = "[[]]"
Output: false
Ví dụ 5:
Input: s = "{[]}"
Output: true
Constraints:
Input: s = "[][]{}"
3
Output: trues
chỉ bao gồm dấu ngoặc đơnInput: s = "[][]{}"
5
Output: true
Solution:
class Solution:
def isValid[self, s: str] -> bool:
if len[s] % 2 != 0:
return False
dict = {'[' : ']', '[' : ']', '{' : '}'}
stack = []
for iin s:
if i in dict.keys[]:
stack.append[i]
else:
if stack == []:
return False
a = stack.pop[]
if i!= dict[a]:
return False
return stack == []
Explanation:
Ở đây chúng tôi sử dụng xác thực ngăn xếp và từ điển! Chúng ta cần một ngăn xếp để lưu trữ phần bên trái hợp lệ cuối cùng của dấu ngoặc đơn, dấu ngoặc đơn bên trái cũng được lấy làm chìa khóa và giá trị của chúng sẽ là dấu ngoặc đơn của nó. Vì vậy, nếu chúng ta lưu trữ các dấu ngoặc đơn bên trái bên trong ngăn xếp, và nếu chúng ta tìm thấy một phần bên phải hợp lệ, hãy bật nó ra khỏi ngăn xếp. Hãy nghĩ về trường hợp ‘{[]}, không khó để tìm ra, chúng ta cần một ngăn xếp để lưu trữ phần bên trái hợp lệ cuối cùng của dấu ngoặc đơn, khi Char tiếp theo là phần bên phải hợp lệ, bật ra phần bên trái.Stack to store the last valid left part of parentheses, when next char is the valid right part, pop out the left part.
Một xác nhận khác là kiểm tra xem độ dài của chuỗi có phải không, nếu nó kỳ lạ, thì rõ ràng đó không phải là dấu ngoặc đơn hợp lệ [hoặc] dấu ngoặc đơn! Vì vậy, độ dài chuỗi dấu ngoặc đơn hợp lệ phải luôn luôn luôn, chúng ta có thể thêm một kiểm tra ở đầu. Kịch bản trường hợp xấu nhất là khi ai đó bắt đầu đầu vào dưới dạng ‘[[[[[[[[[[‘ và như vậy.
GitHub
Hướng dẫn dùng definition split python
Blog Tin tức 05/06/2021 01:18[Split trong Python] Python là ngôn ngữ lập trình có nhiều kiểu dữ liệu khác nhau trong đó bao gồm các chuỗi - string. Mặc dù chuỗi là ...
Hướng dẫn dùng pandas document python
Thư viện pandas python là gì? Nó có thể giúp bạn những gì và làm sao để sử dụng thư viện pandas này trong lập trình python. Hãy cùng tôi đi tìm câu trả lời ...
Hướng dẫn between python - giữa trăn
from timeit import timeit from re import search, DOTALL def partition_find[string, start, end]: return string.partition[start][2].rpartition[end][0] def re_find[string, start, end]: # ...
Lấy giá trị trong dict python
Mở bàiKhi làm việc với dictionary trong Python, có nhiều cách để tìm kiếm giá trị của key trong dictionary cũng như gán giá trị mặc định nếu key này chưa ...
Hướng dẫn python api cli - trăn api cli
Mới trong phiên bản 3.2.Mã nguồn: lib/argparse.py Lib/argparse.pyMô-đun >>> parser = argparse.ArgumentParser[prog=myprogram] >>> parser.print_help[] usage: myprogram ...
Hướng dẫn roc python - trăn đá
Tôi đang cố gắng vẽ đồ thị ROC để đánh giá độ chính xác của mô hình dự đoán mà tôi đã phát triển trong Python bằng cách sử dụng các gói hồi quy ...
Hướng dẫn lệnh vào tool python
Nội DungHalo chào tất cả mọi người dạo gần đây tool lại phát triển mạnh nên môi trường chạy tool cũng là 1 trong những yếu tố qua trọng. Là 1 mối ...
Hướng dẫn chỉnh hợp trong python
Sau khi đã giải được 20 Bài tập Python cơ bản có lời giải, mời bạn tiếp tục thử sức các bài tập Python chỉ sử dụng vòng lặp và các kiểu dữ liệu cơ ...