5 Ocak 2018 Cuma

Balanced Parentheses - Java (ArrayList)

Bu örneğin ArrayList yerine Stack ile kurgulanmış halini aşağıdaki linkte bulabilirsiniz
http://ercanbozkurt.blogspot.com.tr/2018/01/balanced-parentheses-java.html

Balanced Parentheses - Java (ArrayList)
import java.util.ArrayList;
import java.util.Scanner;
public class BalancedParentheses {
public static void main(String[] args) {
// http://ercanbozkurt.blogspot.com
System.out.println("Parantezleri giriniz:");
Scanner sc = new Scanner(System.in);
String brackets = sc.nextLine();
sc.close();
ArrayList<Character> liste = new ArrayList<Character>();
// Açılış parantezlerini depolayacak liste 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
liste.add(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 (liste.isEmpty()) {
isBalanced = false;
break; // döngüden cıkabiliriz
}
if (bracket == liste.get(liste.size() - 1)) {// koleksiyondan koparmadan ilk eleman denetleniyor
liste.remove(liste.get(liste.size() - 1));// koparılıyor
} else {
isBalanced = false;
break;
}
}
}
if (isBalanced && liste.size()==0) { // Döngü bittiğinde durum kontrol ediliyor
System.out.println("DENGEDE");
} else {
System.out.println("DENGEDE DEĞİL");
}
}
}

Hiç yorum yok: