给大家出个算法题目

上一篇 / 下一篇  2007-08-21 12:46:17 / 精华(1)

查看( 40462 ) / 评论( 112 )
不使用任何内部函数,将ABCDEF倒排成FEDCBA.

TAG:

淡定有思 lmhllr 发布于2007-08-20 14:03:21
echo 'FEDCBA';
一步到位,效率又高
zwws的个人空间 zwws 发布于2007-08-20 14:07:46
吖,原来是脑筋急转弯
淡定有思 lmhllr 发布于2007-08-20 14:10:12
回复 #4 zwws 的帖子
没,我想不到,不使用任何函数我不会,瞎蒙的:lol
十五工作室 七月十五 发布于2007-08-20 14:27:50

QUOTE:

原帖由 lmhllr 于 2007-8-20 14:03 发表
一步到位,效率又高
正解
zwws的个人空间 zwws 发布于2007-08-20 14:32:28


真累!!!
罕疯发布于2007-08-20 14:35:02







======================================
发现个错误,就是如果字符串出现0的时候,哈哈,怎么都没人注意到呢。。。

zwws的个人空间 zwws 发布于2007-08-20 14:37:09
回复 #8 罕疯 的帖子
偶像....
yepiaobo的个人空间 yepiaobo 发布于2007-08-20 16:29:15

米斯嘎 ella_123 发布于2007-08-20 18:01:59

QUOTE:

原帖由 yepiaobo 于 2007-8-20 16:29 发表
[php][/php]
习惯看这类代码,有亲切感~~~
wiewind发布于2007-08-20 19:38:35

志凡的个人空间 dzjzmj 发布于2007-08-20 20:46:37
罕疯确实强,我一直在想怎么用一个循环,我的答案和yepiaobo 是一样的
LampHexi thankwsx 发布于2007-08-20 21:16:15

旷野深呼吸 jidixuelang 发布于2007-08-21 08:57:23
我来凑个热闹
把前面简化一下

CODE:

function reverse($str){
    $catch='';
    for($i=0;$char=@$str{$i};$i++){
        $catch = $char.$catch;
    }
    return $catch;
}

千江有水千江月,万里无云万里天 gently 发布于2007-08-21 09:05:02
我是先看了志凡的BLOG,后才摸到这里!看懂了罕疯的算法算是我最大的收获了
spjhf spjhf 发布于2007-08-21 09:17:45

QUOTE:

原帖由 罕疯 于 2007-8-20 14:35 发表
function xxxx($str) {
        $return = '';
        for ($i = 0; ; $i++) {
                @$s = $str{$i};
                if ($s) {
                        $return = $s . $return;
                } else {
                        break;
                }
        }
        return $return;
}
强啊,:lol 所以我就顺手给加到那个置顶的帖子里了
xulxqqqq发布于2007-08-21 09:39:56
虽然效率没短小精干的高 但也是一种解法:

旷野深呼吸 jidixuelang 发布于2007-08-21 10:45:56
你循环出字符长度的话 那方法就多了
diogin发布于2007-08-21 10:52:47
楼上,从底层来说你这种算法是效率最高的,就地重排,只有一个缓冲。前面的一些算法看似简洁,实际上效率并不高。
稍微修改下

CODE:

<?php
function f(&$str) {
    $len = strlen($str);
    $half = $len-- / 2;
    for ($i = 0; $i < $half; ++$i) {
        $char = $str[$i];
        $str[$i] = $str[$len - $i];
        $str[$len - $i] = $char;
    }
}
$str = 'abcde';
f($str);
var_dump($str);
?>

diogin发布于2007-08-21 11:41:08
没看清楚题,不好意思呵:lol
strlen好搞定,关键是要注意不要用错误抑制符@,这个符号在后台是相当于一次关闭错误再还原错误的操作的。

<?php
function f(&$str) {
    for ($i = 0, $len = 0; isset($str[$i++]); ++$len) {
        ;
    }
    $half = $len-- / 2;
    for ($i = 0; $i < $half; ++$i) {
        $char = $str[$i];
        $str[$i] = $str[$len - $i];
        $str[$len - $i] = $char;
    }
}
$str = 'abcde';
f($str);
var_dump($str);
?>
罕疯发布于2007-08-21 15:08:15
isset也是函数吧。。。。
我来说两句

(可选)

Open Toolbar