暴力代码,但是总用时才 568ms????
查看原帖
暴力代码,但是总用时才 568ms????
766573
chenbs楼主2024/7/29 13:39

请看记录

原理:

如果逐个比较字符,速度是很慢的。我们只需要将 char* 强行转换成 long long*,就可以实现 8 倍速的比较

char *a=s+x, *b=s+y;
int ans=0;
// 转成 long long*,直接 8 倍速比较
while(x+ans+7<n && y+ans+7<n && *((long long*)(a+ans))==*((long long*)(b+ans))) ans+=8;
// 剩余的零散字符
while(x+ans<n && y+ans<n && *(a+ans)==*(b+ans)) ans++;
2024/7/29 13:39
加载中...