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.