Created
February 2, 2024 08:17
-
-
Save swarawan/837d160e183a98dd2d6043cae5dd7ffa to your computer and use it in GitHub Desktop.
Balance Brackets
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.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