package main
func (_ Solution) Is_valid(s string) bool {
balance := 0
for _, i := range s {
if i == '(' {
balance++
} else if i == ')' {
balance --
if balance < 0{
return false
}
}
}
return balance ==0
}
Buyerda balance ozgaruvchisi orqali hisoblaymiz
dastlab men strngdagi ( va ) larning osniga tekshirdim lekin bildimki ()() kelib qolsa son jihatidan teng lekin ketma ketlik xato
shunday qilib balance ozgaruvchisi meni qutqardi
uyerda dastlab ( manabunday xoaltga balanceni oshiraman va ) bunday kelsa kamaytiraman va shuni ozidayoq tekshiraman balance 0dan kichik emasmi deb, lekin savol nima uchun ayana shuyerda ?
Javob shuki, qavslar har doim ( bunday ochiladi va uning parasi albatta unday ) boladi
yani balance buyerda qavslarning ketma-ketligini tekshiryapti
((()() bolsa
birinchi balance 1,2,3 boladi keyin 2,3,2 bolbi qoladi