
Balanced Parentheses - Java (Stack)
Aşağıdaki örnek, minik bir müdahale ile daha uygun bir hale getirilebilir. Sıklıkla ödev olarak sorduğum bir soru olduğu için burada minik bir eksik ile paylaşıyorum.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
import java.util.Stack; | |
public class Program { | |
public static void main(String[] args) { | |
// http://ercanbozkurt.blogspot.com.tr | |
System.out.println("Parantezleri giriniz:"); | |
Scanner sc = new Scanner(System.in); | |
String brackets = sc.nextLine(); | |
Stack<Character> stack = new Stack<Character>(); // Açılış parantezlerini depolayacak stack oluşturuluyor | |
boolean isBalanced = true; // Parantezlerin dengede olup olmadığını bildireceğimiz değişken dengede varsayımı ile tanımlanıyor | |
for (int i = 0; i < brackets.length(); i++) { // Parantezlerde döngü kuruluyor | |
char bracket = brackets.charAt(i); //Sıradaki parantez okunup char değişkene atılıyor | |
if (bracket == '{' || bracket == '[' || bracket == '(') { // Parantezin uygun 3lüdden birinin açılışı olup olmadığı denetleniyor | |
stack.push(bracket); // uygun ise koleksiyona ekleniyor | |
} else { | |
// kapanış ise hangi açılışla eslesmesi gerektiği tespit ediliyor | |
if (bracket == '}') { | |
bracket = '{'; | |
} else if (bracket == ')') { | |
bracket = '('; | |
} else if (bracket == ']') { | |
bracket = '['; | |
} | |
// acilis sonrasi gelirsek empty olamaz, kapanisla baslarsak ya da ac kapa kapa seklinde gelirsek bos buluruz | |
if (stack.empty()) { | |
isBalanced = false; | |
break; // döngüden cıkabiliriz | |
} | |
if (bracket == stack.peek()) {// koleksiyondan koparmadan ilk eleman denetleniyor | |
stack.pop(); // koparılıyor | |
} else { | |
isBalanced = false; | |
break; | |
} | |
} | |
} | |
if (isBalanced) { // Döngü bittiğinde durum kontrol ediliyor | |
System.out.println("DENGEDE"); | |
} | |
else | |
{ | |
System.out.println("DENGEDE DEĞİL"); | |
} | |
} | |
} |
Hiç yorum yok:
Yorum Gönder