dart-exercism/matching-brackets/lib/matching_brackets.dart

26 lines
698 B
Dart
Raw Permalink Normal View History

2024-10-14 11:37:17 +02:00
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;
}
}