Takip et

LeetCode — 3110. Bir String’in Puanı

LeetCode — 3110. Bir String’in Puanı

Bu makalede, LeetCode’da bulunan 3110. Bir String’in Puanı problemine çözüm araştıracağız. Bu problem, verilen bir stringin puanını hesaplamakla ilgilidir.

Problem Tanımı

Verilen bir s stringi olsun. Stringin puanı, aşağıdaki kurallara göre hesaplanır:

  • Eğer s boş bir string ise, puanı 0‘dır.
  • Eğer s tek bir harf içeriyorsa, puanı 1‘dir.
  • Eğer s "(" ve ")" ile çevrili iki veya daha fazla stringden oluşuyorsa, puanı, "(" ve ")" arasındaki stringin puanının iki katıdır.
  • Eğer s birden fazla alt stringden oluşuyorsa, puanı, tüm alt stringlerin puanlarının toplamıdır.

Örneğin:

  • s = "()" ise, puanı 2‘dir.
  • s = "(())" ise, puanı 4‘tür.
  • s = "()()" ise, puanı 2‘dir.
  • s = "(()())" ise, puanı 6‘dır.

s stringinin puanını hesaplayan bir fonksiyon yazın.

Çözüm

Bu problemi çözmek için, stringi yinelemeli olarak işleyebilir ve her adımda puanı hesaplayabiliriz. Aşağıdaki algoritma, stringin puanını hesaplamak için kullanılabilir:

  1. Eğer string boş ise, puanı 0‘dır.
  2. Eğer string tek bir harf içeriyorsa, puanı 1‘dir.
  3. Eğer string "(" ve ")" ile çevrili iki veya daha fazla stringden oluşuyorsa, puanı, "(" ve ")" arasındaki stringin puanının iki katıdır. Bunu alt stringin puanını yinelemeli olarak hesaplayarak elde edebiliriz.
  4. Eğer string birden fazla alt stringden oluşuyorsa, puanı, tüm alt stringlerin puanlarının toplamıdır. Bunu her alt stringin puanını yinelemeli olarak hesaplayarak elde edebiliriz.

Bu algoritmayı Python’da şu şekilde uygulayabiliriz:

“`python
def scoreOfParentheses(s: str) -> int:
“””
Verilen bir stringin puanını hesaplayan fonksiyon.

Args:
s: Puanı hesaplanacak string.

Returns:
Stringin puanı.
“””
if not s:
return 0
if s == “()”:
return 1

total = 0
balance = 0
i = 0
while i < len(s): if s[i] == "(": balance += 1 else: balance -= 1 if s[i - 1] == "(": total += 1 << (balance - 1) else: total += scoreOfParentheses(s[i - balance: i]) i += 1 return total ```

Bu kod, stringin her karakterini yinelemeli olarak işler. Eğer karakter "(" ise, balance değişkeni 1 artırılır. Eğer karakter ")" ise, balance değişkeni 1 azaltılır. Eğer önceki karakter "(" ise, toplam puana 1 << (balance - 1) eklenir. Aksi takdirde, alt stringin puanı yinelemeli olarak hesaplanır ve toplam puana eklenir.

Örnek Kullanım

```python
s = "(()())"
score = scoreOfParentheses(s)
print(f"Stringin puanı: {score}") # Stringin puanı: 6
```

Sonuç

Bu makalede, LeetCode'da bulunan 3110. Bir String'in Puanı problemine çözüm aradık. Bu problem, verilen bir stringin puanını hesaplamakla ilgilidir. Yinelemeli bir yaklaşım kullanarak, stringin puanını hesaplayan bir fonksiyon geliştirdik. Bu fonksiyon, stringi yinelemeli olarak işler ve her adımda puanı hesaplar.

Umarım bu makale sizin için faydalı olmuştur. Daha fazla LeetCode çözümünü fatihsoysal.com adlı web sitemde bulabilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.