我正在使用 Dart 玩算法,当我真正遵循 TDD 时,我意识到我的代码有一些限制。
作为面试问题的一部分,我试图反转字符串,但我无法正确反转代理对。
const simple = 'abc';
const emoji = '';
const surrogate = '♂️';
String rev(String s) {
return String.fromCharCodes(s.runes.toList().reversed);
}
void main() {
print(simple);
print(rev(simple));
print(emoji);
print(rev(emoji));
print(surrogate);
print(rev(surrogate));
}
输出:
abc
cba
♂️
️♂
您可以看到简单的表情符号被正确反转,因为我使用的是runes
而不是简单地执行s.split('').toList().reversed.join('');
,但代理对被错误地反转。
如何使用 Dart 编程语言反转可能包含代理对的字符串?