zoukankan      html  css  js  c++  java
  • 字符串翻转(面试题2)

    参考链接地址:http://www.cricode.com/258.html

    题目

    写代码翻转一个C风格的字符串。(C风格的意思是”abcd”需要用5个字符来表示,包含末尾的 结束字符)

    解答

    这道题如果就是要考察你有没有注意到C风格字符串最后的那个结束符,那我觉得还是像书 上写的那样,在代码中有所体现。

    全部代码如下:

    /*===============================================
    # Author: RollerCoaster
    # Last modified:2014-09-09 14:27
    # Filename: 02字符串翻转.c
    # Description: 题目:写代码翻转一个c风格的字符串(c风格)
    #   的意思是"abcd"需要用5个字符来表示,包含末尾的结束字符
    =================================================*/
    
    #include<iostream>
    #include<string>
    using namespace std;
    
    // 功能:实现a和b的交换
    // 参数:a和b
    // 返回:空
    void swap(char &a, char &b)
    {
        // 异或运算
        // a = 3 = 0011; b = 4 = 0100;
        // a = 0011 ^ 0100 = 0111 = 7
        // b = 0111 ^ 0100 = 0011 = 3
        // a = 0111 ^ 0011 = 0100 = 4
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
    }
    
    // 功能:翻转一个字符创(带结束符)
    // 参数:字符串
    // 返回:空
    void reverse1(char *s)
    {
        if (!s)
        {
            return;
        }
    
        char *p = s;
        char *q = s;
        while(*q)
        {
            ++q;
        }
        --q;
        while(p < q)
        {
            swap(*p++, *q--);
        }
    }
    
    // 功能:翻转字符串
    // 参数:字符串
    // 返回:空
    void reverse2(char *s)
    {
        int n = strlen(s);
        for(int i = 0; i < n / 2; i++)
        {
            swap(s[i], s[n - i - 1]);
        }
    }
    
    int main()
    {
        char s[] = "1234567890";
        reverse1(s);
        cout << s << endl;
        return 0;
    }
    作者:BestNow
    出处:http://www.cnblogs.com/BestNow/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    浅析data:image/png;base64的应用
    利用Audacity软件分析ctf音频隐写
    利用Audacity软件分析ctf音频隐写
    php笔记(一)php介绍及数据类型
    php笔记(一)php介绍及数据类型
    ctf学习(web题二)
    ctf学习(web题二)
    win10显示许可证即将过期,但在激活界面显示的仍是已激活问题解决
    实验吧web题:
    js各种练习
  • 原文地址:https://www.cnblogs.com/tianxue/p/3961523.html
Copyright © 2011-2022 走看看