zoukankan      html  css  js  c++  java
  • 利用递归反转字符串(从左到右)

    1.C(PHP底层实现)

    /* {{{ proto string strrev(string str)
       Reverse a string */
    PHP_FUNCTION(strrev)
    {
        zend_string *str;
        char *e, *p;
        zend_string *n;
    
        if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str) == FAILURE) {
            return;
        }
    
        n = zend_string_alloc(ZSTR_LEN(str), 0);
        p = ZSTR_VAL(n);
    
        e = ZSTR_VAL(str) + ZSTR_LEN(str); //e是字符串str的最末尾字符的地址
    
        while (--e >= ZSTR_VAL(str)) {
            *p++ = *e;
        }
    
        *p = '';
    
        RETVAL_NEW_STR(n);
    }
    /* }}} */

    2.C

    void revString2(char *str,char *target){
       int len = sizeof(char)*strlen(str);
       char *e;
       e = str+len;
       while(e-- >= str ){
           *target++ = *e;
       }
    }

    2.PHP

    //反转一个字符串
    function reverseString($string,$len=0,&$target=''){
        $num = strlen($string);
        if($num==0)
            return;
        if($num==$len){
            //$target=$arr[$len-1];
            return 0;
        }
        $len++;
        reverseString($string,$len,$target);
        $target.=substr($string,$len-1,1);
    }
    
    //$arr = ['h','e','l','l','o','w','o','r','l','d'];
    $string = 'helloworld';
    $target = '';
    reverseString($string,0,$target);
    
    print_r($target);
  • 相关阅读:
    Django基础二之URL路由系统
    Django基础一之web框架的本质
    HTTP协议超级详解
    动态规划-背包问题
    java 中对象比较大小
    排序算法
    泛型
    打jar包和使用jar包
    Mongodb中Sharding集群
    linux时间同步,ntpd、ntpdate
  • 原文地址:https://www.cnblogs.com/indifferent/p/14375636.html
Copyright © 2011-2022 走看看