一开始也想到了在三个行里匹配, 但是只想到了 SortedSet, 然后再 ToLower().Distinct() 来判断是否是真子集.
然后程序员只有两种: 懂正则表达式的和不懂正则表达式的:) 既然是匹配, 怎么就想不到用正则表达式呢?
于是开始使用正则表达式. 一开始使用的是这个: [qwertyuiop]*|[asdfghjkl]*|[zxcvbnm]* 可是结果让人恶心, 理所当然地和预期不同.
检查了正则表达式, 反复地看 C# 关于 IsMatch 和 Match 的文档, 可还是不知道为什么.
最后还是 "爆栈" 网的一位朋友提示我, 因为要检查的是一个完整的词, 所以应该加上开始和结束的限定, 所以正确的应该是这样的:^([qwertyuiop]+|[asdfghjkl]+|[zxcvbnm]+)$
以上