26 lines
698 B
Dart
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;
|
||
|
}
|
||
|
}
|