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;
        }
    }
    

    再有就是递归实现了

    没意义,容易溢出,考试不敢用
    
    
  • 相关阅读:
    2.java基础语法(上)
    1.java概述
    Qt layout透明的问题
    Duilib 关于ChildLayout崩溃的问题
    关于注册表使用的几个问题
    win32接口获取ping值
    Web开发中遇到的问题
    DuiLib 窗口透明方法
    通过进程名杀死进程的方法--WIN32
    关于在Qt的MainWindow窗口中添加Layout的问题
  • 原文地址:https://www.cnblogs.com/hebust/p/9480454.html
Copyright © 2011-2022 走看看