问了这个问题。(有和答案一样的会删)
就是想。有一种感觉,我错了,我无法捕捉到哪里。
条件的第一部分
swap(chars, leftElementIndex, rightElementIndex);
leftElementIndex++;
rightElementIndex--;
将被执行如果
isLeftLetter && isRightLetter
有
true && true
第二部分条件
if (!isLeftLetter) {
leftElementIndex++;
}
if (!isRightLetter) {
rightElementIndex--;
}
将被执行如果
isLeftLetter && isRightLetter
有组合
true && false
false && true
false && false
在第二部分isLeftLetter
和isRightLetter
翻转
false <- !true <- true && false -> !false -> true
true <- !false <- false && true -> !true -> false
true <- !false <- false && false -> !false -> true
事实证明,在条件的第二部分
leftElementIndex++;
rightElementIndex--;
无论执行
isLeftLetter - true или false
isRightLetter - true или false
所以整个条件可以简化为
if (isLeftLetter && isRightLetter) {
swap(chars, leftElementIndex, rightElementIndex);
leftElementIndex++;
rightElementIndex--;
} else {
leftElementIndex++;
rightElementIndex--;
}
那为什么要重复呢?可能是这样?如果我的结论有误,请纠正我。
if (isLeftLetter && isRightLetter) {
swap(chars, leftElementIndex, rightElementIndex);
}
leftElementIndex++;
rightElementIndex--;
清楚地:
结果: