zoukankan      html  css  js  c++  java
  • 逆置问题

    今天初次遇到需要逆置字符串的题,该死的不让我用strrev,是时候学习一下了
    所谓逆置,都一样,无论任何数据类型,都可以套用,此处为了偷懒,只处理字符数组
    。。。。
    最最偷懒的方法当然是用c++的中的reverse函数了
    void reverse (BidirectionalIterator first,BidirectionalIterator last);
    //跟sort一样,c++中此类函数后一个参数都是,要排序的最后一个元素的下一个的地址
    。。。。
    当当当当,该说我这种渣渣唯一会的c语言该如何实现了
    参照了许多别人的博客,代码应该大致一样

    void strRev(char *s)								//传入字符数组首地址
        char *end = s + strlen(s) - 1;			//取最后一个元素的地址
        while( end > s)									//头尾指针相遇
            *end^=*s;									//用位与的方式交换,完全可以忽略这种骚操作,多数时候没啥意义
            *s^=*end;
            *end^=*s;
            end--;											//头尾指针向中间移动
            s++;
        }
    }
    

    实现与上边相同,只是写的装逼点

    void strRev(char *s)
    {
        char temp;
        for(char *end = s + strlen(s) - 1; end > s ; --end, ++s)
        {
            *end^=*s;
            *s^=*end;
            *end^=*s;
        }
    }
    

    再有就是递归实现了

    没意义,容易溢出,考试不敢用
    
    
  • 相关阅读:
    习惯
    mysql
    mysql
    mysql
    MYSQL
    MYSQL
    mysql
    手动从Spring中获取指定对象
    jdbc连接数据库
    java代码调用exe(cmd命令)
  • 原文地址:https://www.cnblogs.com/hebust/p/9480454.html
Copyright © 2011-2022 走看看