1,排除為空(true),最後為括號開頭,第一位括號結尾,長度不能整除2的
2,迴圈
a,若第乙個數的有括號無-false
b,若有,第一塊資料長度不能被2整除-false
c,若能整除,for迴圈一般子字串長度,確認是否與另一半對應值一致(這裡演算法沒寫好),不一致,false
子串長度加上迴圈變數
無放在最後,太冗長,又沒調通,不配擁有位置
執行用時 :68 ms, 在所有 python3 提交中擊敗了25.84% 的使用者
記憶體消耗 :13.9 mb, 在所有 python3 提交中擊敗了5.51%的使用者
class
solution
:def
isvalid
(self, s:
str)
->
bool
:while
'{}'
in s or
'()'
in s or
''in s:
s = s.replace(
'()',''
) s = s.replace('',
'')s = s.replace(
'{}',''
)return s ==
''
執行用時 :40 ms, 在所有 python3 提交中擊敗了89.64% 的使用者
記憶體消耗 :14 mb, 在所有 python3 提交中擊敗了5.51%的使用者
class
solution
:def
isvalid
(self, s:
str)
->
bool
: stack =
':'for char in s:
#大if-else:當前char是否是右括號(key),是-->下句
stack_top = stack.pop(
)if stack else
"#"#若棧不為空,彈出最上面;為空,賦值啞變數
!= stack_top :
#小if-else:若彈出值與右括號value取值不一致,返回false
return
false
else
:#大if-else:當前char是否是右括號,否-->加入棧
return
not stack
1,這次耗時將近3小時,下次一小時做不出來,或編寫一輪初稿後不通過即看答案
2,要再了解堆疊用法,需要更新(已更新)
def
isvalid
(strs)
: len_str =
len(strs)
i =0 starts =
'])'
if(strs[-1
]in starts)
or(strs[0]
in ends)
or(len_str%2)
:return
false
while i < len_str:
end = ends[starts.find(strs[i])]
if end not
in strs[i+1:
]:return
false
len_sub = strs[i:
].find(end,1)
+1if len_sub%2!=
0:return
false
else
: temp_num =
int(len_sub/2)
for j in
range
(i,temp_num+i)
:print
(j)print
(ends[starts.find(strs[j])]
,strs[i +len_sub -j ]
)if ends[starts.find(strs[j])]
!= strs[len_sub +i - j -1]
:#這裡兩個比較值不對
print(2
)return
false
else
:print(3
)continue
i += len_sub
#測試用例
a="()"
b ="(){}"
c ="(]"
d ="([)]"
e =""
f =""
for i in
[b,f]
:print
(isvalid(i)
)
leetcode 有效的括號
題目 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 1.左括號必須用相同型別的右括號閉合。2.左括號必須以正確的順序閉合。示例1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 true includ...
leetcode 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
LeetCode 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 本題需使用棧來解決,即遍歷字串,遇到左括號...