【发布时间】:2011-11-20 11:38:57
【问题描述】:
给定两个长度相等的字符串,有没有一种优雅的方法来获取第一个不同字符的偏移量?
显而易见的解决方案是:
for ($offset = 0; $offset < $length; ++$offset) {
if ($str1[$offset] !== $str2[$offset]) {
return $offset;
}
}
但是对于这么简单的任务,这看起来不太正确。
【问题讨论】:
-
对我来说看起来很简单。
-
有更有效的方法可以做到这一点,但阅读起来可能更复杂。这段代码会被调用很多次吗? IE。有没有效率重要吗?
-
@Robert:如何才能更有效地完成?这是
O(n),您将必须检查最多n个字符。 -
!注意!在处理 unicode 字符时,这可能会导致错误的偏移量。如果你想这样做,最好使用mb_substr()