• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php面试题 – 一道PHP面试的编程题

php 搞代码 3年前 (2022-01-25) 18次浏览 已收录 0个评论
文章目录[隐藏]

请编写一个函数

我们工作里使用的的语言是PHP,希望阁下能以PHP作答。若有困难,亦可使用其他语言完成。(如C#、Java、C++、Python、Perl、Ruby等)

要求

输入参数–一个字符串,返回一个字符串。
输入是一句英文句子,只有英文字(a-z, A-Z)、每个字之间仅以一个空格分格,前后没有空格。
返回的是要把每一个字的字母顺序倒转写,但字的顺序和字母的大小写位置则保持不変

示例

输入参数
This is an Apple on eBay

返回
Siht si na Elppa no yAbe
(如eBay因为是第二个字母大写,倒写后保持第二个字母的大写。)

回复内容:

请编写一个函数

我们工作里使用的的语言是PHP,希望阁下能以PHP作答。若有困难,亦可使用其他语言完成。(如C#、Java、C++、Python、Perl、Ruby等)

要求

输入参数–一个字符串,返回一个字符串。
输入是一句英文句子,只有英文字(a-z, A-Z)、每个字之间仅以一个空格分格,前后没有空格。
返回的是来2源gaodaima#com搞(代@码&网要把每一个字的字母顺序倒转写,但字的顺序和字母的大小写位置则保持不変

示例

输入参数
This is an Apple on eBay

返回
Siht si na Elppa no yAbe
(如eBay因为是第二个字母大写,倒写后保持第二个字母的大写。)

这样有意义吗?

<code>function revStr($str){    $str2 = implode(" ", array_map("strrev", explode(" ", $str)));    $len = strlen($str);    while ($len > 0) {        $str2{$len - 1} = ord($str{$len - 1}) < 97 ? strtoupper($str2{$len - 1}) : strtolower($str2{$len - 1});        $len--;    }    return $str2;}$str = 'This is an Apple on eBay';echo revStr($str);// Siht si na Elppa no yAbe</code>

http://segmentfault.com/q/1010000002547110/a-1020000002547831

先用$arr=explode(”,$input)分割这个字符串,
然后将数组翻过来array_reverse()
然后遍历$arr
用$a=substr($arr[0],0,1)截取

<code class="php">if(preg_match('/^[a-z]+$/', $a)){            echo '小写字母';            $a=strtoupper($a)}elseif(preg_match('/^[A-Z]+$/', $a)){            echo '大写字母';            $a = strtolower($a)}</code>

然后拼起来就完成了

我也来一个,比@util的稍微快点:)

<code class="php">function revStr(&$str) {    $offset = 0;    $isEnd = false;    while(!$isEnd){        $spacePos = strpos($str, ' ', $offset);        if($spacePos === false){            $spacePos = strlen($str);            $isEnd = true;        }                $wordLen = $spacePos - $offset;        $wordLenHalf = $wordLen >> 1;        for ($j = 0; $j < $wordLenHalf; $j++) {            $diff = 0;            $charPos = $offset + $j;            $charPosRev = $spacePos - $j - 1;            $charASCII = ord($str[$charPos]);            $charASCIIRev = ord($str[$charPosRev]);            $diff += ($charASCII <= 90) ? -16 : 16;            $diff += ($charASCIIRev <= 90) ? 16 : -16;            if($diff){                $str[$charPos] = chr($charASCIIRev + $diff);                $str[$charPosRev] = chr($charASCII - $diff);            }else{                $tmp = $str[$charPos];                $str[$charPos] = $str[$charPosRev];                $str[$charPosRev] = $tmp;            }        }        $offset += $wordLen+1;    }}$str = 'This is an Apple on eBay';revStr($str); echo $str;// Siht si na Elppa no yAbe</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php面试题 – 一道PHP面试的编程题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址