Bir parens grubuna açık paren (, buna uygun yakın paren )ve içindeki her şeyi diyoruz .
Bir parens grubu veya dizesi, hiçbir şey içermiyorsa veya yalnızca 2 parantez içinde dengelenmiş parens grubu içeriyorsa parantez içinde denir .
Örneğin:
The string "(()())()" is parenthesly balanced
( )() Because it contains exactly 2 parenthesly balanced parens groups
()() The left one is parenthesly balanced because it contains 2 parenthesly balanced parens groups (balanced because they are empty). The right one is parenthesly balanced because it contains nothing.
Aynı şekilde:
The string "(()(()))()" is not parenthesly balanced
( )() Because it contains a parens group that is not parenthesly balanced: the left one
()( ) The left one is not balanced because it contains a parens group that is not balanced: the right one
() The right one is not balanced because it only contains one balanced group.
Bu nedenle, parantez içinde dengeli bir dize veya parens grubu şunlardan birini yapmalıdır:
- Hiçbir şey içermez.
- Veya sadece ve tam olarak 2 parantez içinde dengelenmiş ebeveyn grubu içerir. Başka bir şey içermemelidir.
Görev:
Göreviniz, belirli bir dizenin parantez içinde dengelenmiş bir işlev olup olmadığını kontrol eden bir işlev veya program yazmaktır.
Giriş:
Giriş, bir dize veya karakter listesi veya benzer bir şey olacaktır. Sen dize sadece karakterlerden oluşacak varsayabiliriz '('ve ')'. Ayrıca her aç parantez varsayabiliriz (onun eşleşen yakın paren olacak )şöyle dizeleri hakkında endişe yok, "((("ya ")("ya "(())("...
Not: As onun comment Körükteki @DigitalTrauma bahsettiği, bu saydırmak için ok ()(gibi diğer karakterler tarafından açılan <>, []bazı dillerde kaçan gibi ek işleri neden ise, ...)
Çıktı:
Dizenin parantez içinde dengeli olup olmadığını gösteren herhangi bir şey (doğru veya yanlış, 1 veya 0, ...). Lütfen cevabınıza fonksiyonunuzun / programınızın ne vermesi beklediğinizi ekleyin.
Örnekler:
"" => True
"()()" => True
"()(()())" => True
"(()(()(()())))(()())" => True
"(((((((()())())())())())())())()" => True
"()" => False
"()()()" => False
"(())()" => False
"()(()(())())" => False
"(()())(((((()())()))())())" => False
"()(()()()())" => False
"()(()(()())()())" => False
Son iki örnek gerçekten bir fark yarattı!
İyi şanslar!
"(()())()"olarak temsil edilir [0, 0, 1, 0, 1, 1, 0, 1]. Bu, girdiyi karakter koduna dönüştürme ve ardından çıkarma zorunluluğunu ortadan kaldıracaktır.
