编程挑战:在不使用循环或本机反转函数的情况下反转字符串
如何编写一个简短的 PHP 函数来反转字符串?
该函数必须:
- 只有一个参数,
- 不使用内置函数
strrev()
或array_reverse()
,并且 - 不使用
for( 等循环结构)
、foreach()
或while()
。
How would you write a short PHP function to reverse a string?
The function must:
- have only one argument,
- not use the built-in function
strrev()
orarray_reverse()
, and - not use a looping construct like
for()
,foreach()
orwhile()
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
赶紧往下扫,这些看起来好长啊!
递归显然不适用于长度超过 100 个字符的字符串。
Quickly scanning down, these all look so long!
Recursive so obviously doesn't work on strings longer than 100 chars.
因为这听起来像是家庭作业问题,我会告诉你如何做,但你自己编码。
通过强制转换将字符串转换为数组。然后使用采用用户定义的排序函数的数组排序函数之一。
Since this sounds like homework question I'll tell you how but you code it yourself.
Turn the string into an array with a cast. Then use one of the array sorting functions that takes a user defined sorting function.
递归解决方案:
说明:
为了使其适用于零长度字符串,添加了另一个条件表达式:
Recursive solution:
Explanation:
To make it work with zero-length string, another conditional expression was added:
满足您的所有要求,但仅适用于 PHP 5.3 或更高版本。让它对其他人起作用是家庭作业。
Meets all your requirements but works only in PHP 5.3 or higher. Making it work on others is left as homework.
递归解决方案。感觉就像你的老师正在寻找的东西一样。
它交换第一个和最后一个字母,然后与字符串的其余部分相同。
更新:
受 mateusza 的启发,我创建了另一个解决方案(很有趣;))
它的工作原理与 mateuszas 类似,但这个解决方案附加第一个字符,而不是在最后一个字符前面。
A recursive solution. Feels like something like that is what your teacher is looking for.
It swaps the first and the last letter and than makes the same with the rest of the string.
Update:
Inspired by mateusza I created another solution (its fun ;))
It works similar to mateuszas, but this one appends the first character, instead of prepend the last one.
在 PHP 中不使用任何函数:
In PHP without using any function:
为了避免递归的字符串长度限制,您可以对非黑名单函数使用三个步骤。
代码:(演示)
作为 IIFE:
To avoid the string length limitations of recursion, you can use three steps with non-blacklisted functions.
Code: (Demo)
As an IIFE:
我的答案是OOP并使用递归。自行处理递归限制。
My answer is OOP and uses recursion. Takes care by itself of the recursion limit.