dart-exercism/matching-brackets/lib/matching_brackets.dart
2024-10-14 11:37:17 +02:00

26 lines
698 B
Dart

class MatchingBrackets {
bool isPaired(String input) {
final Map<String, String> bracketPairs = {
'}': '{',
']': '[',
')': '(',
};
final List<String> openBrackets = bracketPairs.values.toList();
final List<String> closeBrackets = bracketPairs.keys.toList();
final List<String> stack = [];
for (final char in input.runes.map((rune) => String.fromCharCode(rune))) {
if (openBrackets.contains(char)) {
stack.add(char);
} else if (closeBrackets.contains(char)) {
if (stack.isEmpty || stack.last != bracketPairs[char]) {
return false;
}
stack.removeLast();
}
}
return stack.isEmpty;
}
}