将代码:
```cpp
if(y[sa[i]]==y[sa[i-1]]&&y[sa[i]+k]==y[sa[i-1]+k])
```
改成:
```cpp
if(y[sa[i]+k]==y[sa[i-1]+k]&&y[sa[i]]==y[sa[i-1]])
```
也是对的。
by 翼德天尊 @ 2024-01-15 18:52:22
第一种完全正确,第二种基于 UB。
by sqrtDataStructure @ 2024-01-15 19:03:22
你可以使用 sanitizer 检测。
by sqrtDataStructure @ 2024-01-15 19:03:48
@[翼德天尊](/user/257621) 第一种写法是对的,因为如果 `sa[i]+k` 或 `sa[i-1]+k` 有一个大于 `n+1` 了那么这个 `==` 是必不成立的,不会执行第二个判断
by 耳朵龙_ @ 2024-01-15 19:05:28
@[sqrtDataStructure](/user/484006) @[耳朵龙_](/user/427828) 哦哦哦确实,谢谢捏
by 翼德天尊 @ 2024-01-15 19:18:15
@[sqrtDataStructure](/user/484006) 哪个东西啊?
by stOtue @ 2024-02-13 18:42:30