当前位置: 首页 > 后端技术 > PHP

字符串翻转

时间:2023-03-30 03:33:27 PHP

字符串反转之前,面试经常会遇到字符串反转的问题,要求不要使用内置函数。一般这个时候从尾到头循环,然后给一个新的字符串赋值的方法是这样的。(自豪地使用PHP):=0;$i--){$newStr.=$str{$i};}echo$newStr.PHP_EOL;这样就完成了一次字符串的反转,从一个字符串的末尾开始,将字符串向前转一次,然后把新字符串中的字符串按顺序排列,实现原字符串的反转。最近发现了另一种实现字符串反转的方法。交换字符串中的字符。第一位和最后想交换,第二位和倒数第二位交换,以此类推,这样原本需要把所有字符取出来放到新数组中的操作就变成了,一次操作两个字符交换,一次更改和两次操作的效率加倍。让我们用代码来实现它:$tail){break;}$tmp=$str{$head};$str{$head}=$str{$tail};$str{$tail}=$tmp;}echo$str;通过上面的代码,也实现了字符串反转,同时减少了循环次数,也就是说时间复杂度从O(n)变成了O(logn)。同时需要注意的是,在上面的代码中,相当于设置了两个指针,一个指向head,也就是前面,一个指向tail,也就是后面,然后改变反向代码中实现判断的两个指针的位置,因为,因为字符串的长度不固定,所以两个指针可能会在中间相遇,比如字符串的长度是7,在中有3个指针它的前面。字符,后面跟着三个字符,操作完三个字符后两个指针会来到中间的字符,这个字符不需要取反另一种情况是左右边的长度相等,尾指针的位置会在头指针的前面,也就是下标比头指针小。此时已经完成反转,可以结束操作