Cette semaine, c'est Pierrick qui vous propose un #KataOfTheWeek : Balanced Brackets
Briefing du Kata : Vous avez une chaîne de caractères en entrée, elle contient uniquement des parenthèses des crochets et des accolades. Le but de l'algo est de renvoyer true si les caractères de la chaîne sont dans un ordre cohérent. Sinon il renvoie false. La chaîne de caractères est dite cohérente si: -tout(e) parenthèse, crochet ou accolade ouvrant(e) est respectivement fermé(e) par une parenthèse, un crochet ou une accolade fermant(e). -tout(e) parenthèse, crochet ou accolade fermant(e) ferme respectivement une parenthèse, un crochet ou une accolade ouvrant(e). (On considère qu'un caractère fermant ferme le caractère ouvrant qui le précède. Ex: '[)' la parenthèse ferme le crochet -> incohérent).
Exemple:
isBalancedBrackets("[(())]"); // => true
isBalancedBrackets("[(])"); // => false
Saurez-vous résoudre le problème ?
Bon courage !
Et voici une solution proposée par l'auteur en Java :
public static boolean isBalancedBrackets(String input) {
{
Stack<Character> stack = new Stack<>();
for (char current : input.toCharArray()) {
if (current == '(' || current == '{' || current == '[')
stack.push(current);
else if (current == ')' || current == '}' || current == ']') {
if (stack.empty()) return false;
char previous = stack.pop();
if (previous == '(' && current == ')') continue;
if (previous == '{' && current == '}') continue;
if (previous == '[' && current == ']') continue;
return false;
}
}
return stack.empty();
}
}
Votre équipe TakiVeille