这个算法利用计数已经达到O(n)的时间复杂度了,只对两个输入做了一遍扫描.空间复杂度也有所改进,从两个数组减少为一个数组,提前判断也做了,我想象不到还有什么算法能够更快.
只是数组256这里有点小问题.使用数组256表示作者希望能对0x80之后的字符进行计数,但这句话“cnt[ *p1++ ]++”有问题:*p1如果大于0x80,那么它是一个负数,这会造成错误的元素被计数,应该加个unsigned char做下限定.
这个算法利用计数已经达到O(n)的时间复杂度了,只对两个输入做了一遍扫描.空间复杂度也有所改进,从两个数组减少为一个数组,提前判断也做了,我想象不到还有什么算法能够更快.
只是数组256这里有点小问题.使用数组256表示作者希望能对0x80之后的字符进行计数,但这句话“cnt[ *p1++ ]++”有问题:*p1如果大于0x80,那么它是一个负数,这会造成错误的元素被计数,应该加个unsigned char做下限定.