Skip to content

Instantly share code, notes, and snippets.

@swarawan
Created February 2, 2024 08:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save swarawan/837d160e183a98dd2d6043cae5dd7ffa to your computer and use it in GitHub Desktop.
Save swarawan/837d160e183a98dd2d6043cae5dd7ffa to your computer and use it in GitHub Desktop.
Balance Brackets
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class BalanceBrackets {
public static void main(String[] args) {
String message = "([])(){}(())()()";
String message2 = "()()[{()})]";
String message3 = "[(])";
String message4 = "";
// kalo buka maka simpan
// kalo tutup maka cari pasangan dari temp
// kalo match, maka hapus temp index terakhi
System.out.println(message4);
System.out.println(bracketValidation(message4)); // ==============>> pas interview tadi salah pakai variabel.
}
// temp = ( [
public static boolean bracketValidation(String message) {
if(message == null || message.isEmpty()) {// ==============>> tambahan ini untuk handle null / empty
return false;
}
HashMap<String, String> bracketsPair = new HashMap<>();
bracketsPair.put("{", "}");
bracketsPair.put("(", ")");
bracketsPair.put("[", "]");
List<String> tempCloseBrackets = new ArrayList<>();
for (int i = 0; i < message.length(); i++) {
String character = String.valueOf(message.charAt(i));
// 2. kalo tutup maka cari pasangan dari temp
if (bracketsPair.containsKey(character)) {
// dapet, artinya dia open bracket
// 1. kalo buka maka simpan
String closeBracket = bracketsPair.get(character); // )
tempCloseBrackets.add(closeBracket);
} else {
// ga dapet, artinya dia close bracket
int lastIndexTemp = tempCloseBrackets.size() - 1;
if(tempCloseBrackets.isEmpty()) { // ==============>> tambah ini untuk handle tempclosebracket nya empty atau ketika di case 3 dimana index 0 bukan open bracket
return false;
}
if (character.equals(tempCloseBrackets.get(lastIndexTemp))) {
tempCloseBrackets.remove(lastIndexTemp);
} else {
return false;
}
}
}
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment