我正在寻找一种有效的解决方案来检查两个字符串是否是字谜,但字符表/字典检查可能不是 unicode 的好解决方案。我想出了一个解决方案,但我不知道如何证明它在数学上是正确的。公式表达为“ (a + b) = (c + d) 和 a XOR b XOR c XOR d = 0 ==> (a,b) 和 (c,d) 是字谜”。也许你可以帮助我。下面是一个实现。
def isAnagram(s1: String, s2: String): Boolean = {
if (s1.length != s2.length) return false
else {
var numVal = 0
var bitVal = 0
for (i <- 0 until s1.length) {
numVal += s1(i) - s2(i)
bitVal ^= s1(i) ^ s2(i)
}
return numVal == 0 && bitVal == 0
}